Как я могу динамически добавлять тег <object> с помощью JavaScript в IE?

StackOverflow https://stackoverflow.com/questions/281246

Вопрос

Мне нужно добавить либо тег внедрения для Firefox, либо тег объекта для Internet Explorer с JavaScript для обращения к соответствующему ActiveX/плагину в зависимости от браузера.Плагин может отсутствовать, и в этом случае его необходимо загрузить.Динамически добавленный тег внедрения для Firefox работает должным образом.Динамически добавляемый тег объекта для Internet Explorer, похоже, вообще ничего не делает.Для правильной работы тегу объекта необходимы следующие атрибуты.

id ="SomeId" classid = "CLSID:{GUID}" codebase = "http://www.MyActicexSource.com/MyCuteActivex.CAB#Version=2,0,0,1"

Даже общая рабочая идея или метод были бы хороши.

Спасибо!

Это было полезно?

Решение

Мне нужно было сделать то же самое и просто поместить весь HTML, необходимый для тега OBJECT, в строку в JavaScript и просто заменить внутренний HTML тега div HTML-кодом OBJECT, и это отлично работает в IE.

// something akin to this:
document.getElementById(myDivId).innerHTML = "<OBJECT id='foo' classid='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95'.....etc";

Это должно сработать, меня это вполне устраивает — я использую его для встраивания проигрывателя Windows Media на страницу.


ОБНОВЛЯТЬ:Вы можете запустить приведенный выше код после загрузки страницы через обработчик событий, который запускается либо при событии загрузки страницы, либо, возможно, в ответ на щелчок пользователя.Единственное, что вам нужно сделать, это иметь пустой тег DIV или тег другого типа, который позволит нам вставлять HTML-код через тег этого элемента. innerHTML свойство.


ОБНОВЛЯТЬ:Видимо, тебе нужно больше помощи, чем я думал?Возможно, это поможет:

Сделайте так, чтобы ваш тег BODY выглядел так: <body onload="loadAppropriatePlugin()">

Где-то на вашей странице, где вы хотите, чтобы эта вещь загружалась, был пустой тег DIV с id атрибут чего-то вроде «Фу» или чего-то еще.

Имейте такой код в <script> отметить в своем <head> раздел:

function getIEVersion() { // or something like this
   var ua = window.navigator.userAgent;
   var msie = ua.indexOf("MSIE ");
   return ((msie > 0) ? parseInt(ua.substring(msie+5, ua.indexOf(".", msie))) : 0);
}

function loadAppropriatePlugin() {
    if(getIEVersion() != 0) { // this means we are in IE
        document.getElementById("Foo").innerHTML = "<OBJECT id='foo' classid='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95'.....etc";
    } else {
        // if you want to maybe do the same for FF and load that stuff...
    }
}

Это помогает?

Другие советы

var object = document.createelement('object')
object.setAttribute('id','name')
object.setAttribute('clssid','CLSID:{}')

И то же самое по остальным параметрам.

Два пути.

1) Просто создайте документ. Напишите, где захотите.

<script type="text/javascript">
<!--
   document.write("<object id=\"SomeId\" classid=\"CLSID:{GUID}\" codebase=\"http://www.MyActicexSource.com/MyCuteActivex.CAB#Version=2,0,0,1\"></object>");
-->
</script>

2) Отредактируйте свойство InnerHTML тега.

<div id="my-div"></div>
<script type="text/javascript">
<!--
   document.getElementById("my-div").innerHTML = "<object id=\"SomeId\" classid=\"CLSID:{GUID}\" codebase=\"http://www.MyActicexSource.com/MyCuteActivex.CAB#Version=2,0,0,1\"></object>";
-->
</script>

РЕДАКТИРОВАТЬ: Просто обратите внимание: лучше не использовать для этого JavaScript, поскольку люди с включенным JavaScript никогда не увидят объект.Было бы лучше просто поместить его в свой HTML.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top