Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   не отображается динамический ActiveX (https://javascript.ru/forum/dom-window/32482-ne-otobrazhaetsya-dinamicheskijj-activex.html)

vikodin 17.10.2012 17:46

не отображается динамический ActiveX
 
есть объект ActiveX, отображающий потоковое видео.
если я его добавляю статически в код страницы для IE, то видео воспроизводится.
Код объекта
Код:

<OBJECT id='dccsATT' type='application/x-oleobject' height=600
width=600 classid='CLSID:971FC730-55F1-461f-83FD-B3BF5E1F039E' codebase='AVC_AX_742.cab#version=1,1,2,6'>
<PARAM NAME="Action" VALUE="LiveOpen">
<PARAM NAME="Username" VALUE="*****">
<PARAM NAME="Password" VALUE="*****">
<PARAM NAME="MediaType" VALUE="DEFAULT">
<PARAM NAME="UserId" VALUE="0">
<PARAM NAME="_IPAddress" VALUE="*******">
<PARAM NAME="_Port" VALUE="80">
<PARAM NAME="_Detection" VALUE="2">
<PARAM NAME="DefaultChannel" VALUE="0">
</OBJECT>

Когда добавляю его вот так
Код:

<head>
<title></title>
    <script type="text/javascript">
function OnPageLoad(){
    ActiveX = document.createElement('OBJECT');
    ActiveX.id ='dccsATT1';
    ActiveX.setAttribute('type','application/x-oleobject');
    ActiveX.setAttribute('width',600);
    ActiveX.setAttribute('height',600);
    ActiveX.setAttribute('classid','CLSID:971FC730-55F1-461f-83FD-B3BF5E1F039E');
    ActiveX.codebase = 'AVC_AX_742.cab#version=1,1,2,6';
    par = document.createElement('PARAM');
    par.name='UserId'; par.value='0';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='_Port'; par.value='80';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='_Detection'; par.value='2';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='DefaultChannel'; par.value='0';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='NTSC_Video'; par.value='0';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='Action'; par.value='LiveOpen';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='Username'; par.value='*****';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='Password'; par.value='*****';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='_IPAddress'; par.value='*****';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='MediaType'; par.value='DEFAULT';
    ActiveX.appendChild(par);
    </script>
</head>
<body onload="OnPageLoad()" style="overflow: auto;">
<div id="div_Body" class="div_Body">
</div>
</body>
</html>

то на странице отображается только рамка объекта с крестиком в левом верхнем углу, видео не воспроизводится. в DOM объект добавляется.
При просмотре DebugBar разница между статическим и динамическим объектами состоит в строке
codebase=AVC_AX_742.cab#version=1,1,2,6 - для статического и
codebase="AVC_AX_742.cab#version=1,1,2,6" - для динамического.
Возникают вопросы:
1) может codebase нужно как-то иначе указывать
2) или ActiveX нужно как-то "запустить" после загрузки страницы
3) или он вообще динамически по-другому создается и добавляется.

Поиск пока особо не помог.
Спасибо всем кто сможет прояснить ситуацию.

lord2kim 17.10.2012 18:05

vikodin, судя по приведенному вами коду, функция OnPageLoad() не закрыта и нету добавления элемента ActiveX в объектную модель документа

vikodin 17.10.2012 18:22

Извините, простая опечатка. "}" присутствует. Просто функцию переносил из файла скрипта и не скопировал. (переносил для уменьшения необходимого кода). И объект-таки добавляется в ДОМ

vadim5june 17.10.2012 18:26

А где же эта строчка
document.body.appendChild(ActiveX)

codebase тоже через setAttribute надо вставлять

vikodin 17.10.2012 22:09

"codebase тоже через setAttribute надо вставлять"
изначально так и было, потом поменял на
"ActiveX.codebase = 'AVC_AX_742.cab#version=1,1,2,6';"
результат тот же.

"А где же эта строчка
document.body.appendChild(ActiveX)"
и снова извините, в исходнике и эта строчка есть.

Код:

function OnPageLoad(){
    ActiveX = document.createElement('OBJECT');
    ActiveX.id ='dccsATT1';
    ActiveX.setAttribute('type','application/x-oleobject');
    ActiveX.setAttribute('width',600);
    ActiveX.setAttribute('height',600);
    ActiveX.setAttribute('classid','CLSID:971FC730-55F1-461f-83FD-B3BF5E1F039E');
    ActiveX.codebase = 'AVC_AX_742.cab#version=1,1,2,6';
    par = document.createElement('PARAM');
    par.name='UserId'; par.value='0';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='_Port'; par.value='80';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='_Detection'; par.value='2';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='DefaultChannel'; par.value='0';
    ActiveX.appendChild(par);
  par = document.createElement('PARAM');
    par.name='Action'; par.value='LiveOpen';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='Username'; par.value='*****';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='Password'; par.value='*****';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='_IPAddress'; par.value='*****';
    ActiveX.appendChild(par);
    par = document.createElement('PARAM');
    par.name='MediaType'; par.value='DEFAULT';
    ActiveX.appendChild(par);
    document.getElementById("div_body").appendChild(ActiveX);
}

вот листинг DebugBar после отработки OnPageLoad()
<DIV class=div_Body id=div_Body>
<OBJECT id=dccsATT1 type=application/x-oleobject height=600 width=600 classid=CLSID:971FC730-55F1-461f-83FD-B3BF5E1F039E codebase="AVC_AX_742.cab#version=1,1,2,6">
<PARAM NAME="UserId" VALUE="0">
<PARAM NAME="_Port" VALUE="80">
<PARAM NAME="_Detection" VALUE="2">
<PARAM NAME="DefaultChannel" VALUE="0">
<PARAM NAME="Action" VALUE="LiveOpen">
<PARAM NAME="Username" VALUE="*****">
<PARAM NAME="Password" VALUE="******">
<PARAM NAME="_IPAddress" VALUE="******">
<PARAM NAME="MediaType" VALUE="DEFAULT">
</OBJECT>
</DIV>


Часовой пояс GMT +3, время: 04:57.