كيف يمكنني إضافة علامة مع JavaScript في IE؟

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

سؤال

يجب أن أضيف إما علامة تضمين لـ Firefox أو علامة كائن لـ Internet Explorer مع JavaScript لمعالجة المكون الإضافي ActiveX / Active وفقًا للمتصفح. يمكن أن يكون المكون الإضافي مفقودًا ويحتاج إلى تنزيله في هذه الحالة. تعمل علامة التضمين المضافة ديناميكيًا لـ Firefox كما هو متوقع. يبدو أن علامة الكائن المضافة ديناميكيًا لـ Internet Explorer لا تفعل شيئًا على الإطلاق. تحتاج علامة الكائن إلى السمات التالية للعمل بشكل صحيح.

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

حتى فكرة أو طريقة عمل عامة ستكون لطيفة.

شكرًا!

هل كانت مفيدة؟

المحلول

كنت بحاجة إلى القيام بهذا الشيء نفسه وببساطة وضع جميع HTML اللازمة لعلامة الكائن في سلسلة في JavaScript واستبدال Innerhtml لعلامة DIV مع الكائن HTML ويعمل في IE على ما يرام.

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

يجب أن ينجح ذلك ، إنه جيد بالنسبة لي - أستخدمه لتضمين مشغل وسائط Windows في صفحة.


تحديث: يمكنك تشغيل الرمز أعلاه بعد تحميل الصفحة عبر معالج الأحداث الذي يعمل إما على حدث تحميل الصفحة أو ربما استجابةً لنقرة المستخدم. الشيء الوحيد الذي عليك القيام به هو الحصول على علامة DIV فارغة أو نوع آخر من العلامات التي تتيح لنا ضخ رمز HTML عبر هذا العنصر innerHTML منشأه.


تحديث: يبدو أنك بحاجة إلى مساعدة أكثر مما اعتقدت أنك بحاجة؟ ربما هذا سوف يساعد:

اجعل علامة جسمك تبدو هكذا: <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