Добавляем...


Взаимодействие с элементами управления ActiveX
JavaScript можно использовать для взаимодействия с элементами управления ActiveX почти аналогично модулям расширений.

Доступ к элементу управления можно получить через объект Document, используя значение id соответствующего дескриптора <object>.

Если требуемый элемент управления недоступен, Internet Explorer сначала автоматически установит его (запросив при этом разрешение пользователя), а затем сделает его доступным для использования. Замечание. В дескрипторе <object> можно использовать атрибут mayscript, чтобы разрешить применение функций обратного вызова.

Любой метод, предлагаемый элементом управления, можно вызвать с помощью JavaScript аналогично тому, как это делается для аплетов и модулей расширений. Например, чтобы вызвать метод Play ( ) элемента управления из предыдущего примера, используйте document.demoMovie.Play( ) ; В качестве иллюстрации перепишем предыдущий пример так, чтобы он работал и в браузерах Netscape, и в Internet Explorer.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional. dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>"Универсальный" пример управления файлом Flash</title>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1251" />
<script type="text/javascript">
<!---
var dataReady = false;
var pluginAvaUable = false;
function detectPlugin( )
{
if (navigator.plugins &&
((navigator.plugins["Shockwave, Flash"] &&
navigator.plugins["Shockwave Flash"]["application/x-shockwave-
flash" ] )
( (
(navigator.plugins["Shockwave Flash 2.0"] &&
navigator.plugins["Shockwave Flash 2.0"]["application/x-shock-
wave-flash"] )
))
pluginAvailable = true;
return(pluginAvailable);
)
function changeFrame(i)
{
if (!dataReady)
return;
// Некоторые версии элемента управления ActiveX не поддерживают
// TotalFrames, поэтому здесь пропущена соответствующая проверка.
// Но этот элемент управления правильно обрабатывает значения,
// выходящие за рамки диапазона.
document.demo.GotoFrame(parseInt(i) );
}
function play( ) {
if (!dataReady) return; if (!document.demo.IsPlaying()) document.demo.Play(); }
function stop( )
(
if (!dataReady)
return;
if (document.demo.IsPlaying( ) )
document.demo.StopPlay( );
}
function rewind( )
{
if (!dataReady)
return;
if (document.demo.IsPlaying( ))
document.demo.StopPlay( );
document.demo.Rewind( );
}
function zoom(percent)
(
if (!dataReady)
return;
if (percent > 0)
document.demo.Zoom(parselnt(percent));
}
//—>
</script>
</head>
<body onload="dataReady = true;">
<object id="demo" classid="clsid:D27CDB6E-AE6D-llcf-96B8-444553540000"
width="318" height="300" codebase="http://active.macromedia.com/fiash2/
cabs/swflash.cab#version=5,0,0,0">
<param name="movie" value="http://demos.javascriptref.com/jscript.swf" />
<param name="play" value="false" />
<param name="loop" value="false" />
<script type="text/javascript">
<!--
if (detectPlugin())
(
document.write('<embed name="demo"
src="http://demos.javascriptref.com/jscript.swf" width="318"
height="300" play="false" loop="false"
pluginspage="http://www.macromedia.com/shockwave/download/index.cgi7Pl_
Prod_Version=ShockwaveFlash5" swliveconnect="true"x/embed>');
}
else
{
// в "рабочей" версии здесь можно добавить изображение
document.write('Для этого сценария требуется Macromedia Flash'); }
//—>
</script>
<noscript>
Для демонстрации этой возможности требуется поддержка JavaScript!
</noscript>
</object>
<form name="controlForm" id="controlForm" onsubmit="return false;"
action="#"
method="get">
<input type="button" value="Старт" onclick="play( );" />
<input type="button" value="Стоп" onclick="stop( );" />
<input type="button" value="Перемотка" onclick="rewind( );" /><br />
<input type="text" name="whichFrame" id="whichFrame" />
<input t'ype="button" value="Сменить фрейм"
onclick="changeFrame(controlForm.whichFrame.value);" /><br />
<input type="text" name="zoomValue" id="zoomValue" />
<input type="button" value="Изменить размер"
onclick="zoom(controlForm.zoomValue.value)" />
(больше 100 - увеличение, меньше 100 - уменьшение)<br />
</form>
</body>
</html>

Вы можете спросить, выполняют ли элементы управления ActiveX все то, что могут делать модули расширений? Ответом будет "даже больше".

Например, данные, обрабатываемые элементами управления ActiveX, могут использовать все преимущества функций обратного вызова, так что все, что можно сделать с помощью модулей расширений, доступно и в ActiveX.

Более того, поскольку данные, предназначенные для ActiveX, внедряются с помощью элементов <object>, эти данные могут использовать обработчики событий <object>, определенные в (X)HTML.

Поддержка ActiveX в VBScript кажется более основательной, чем соответствующая поддержка в JavaScript. Вероятнее всего, это следствие того факта, что VBScript как технология Microsoft более близко связана с технологией COM Microsoft.

Более подробную информацию об ActiveX можно найти по адресу http://www.microsoft.com/com/tech/activex.asp.


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика