سؤال

وأنا أحاول الحصول على عنصر كائن من صفحة ويب الخاص بي باستخدام getElementById (في نهاية المطاف حتى أتمكن من استبدالها عنصر كائن تم إنشاؤه بشكل حيوي) ولكنه يعود null في IE6.

في التعليمة البرمجية التالية، وظيفة byId() ترجع null في IE لكن [object HTMLObjectElement] في فايرفوكس 3 وظيفة lengthOfByTagName() يعود 0 في IE لكن 1 في فايرفوكس.

هل هناك شيء أقوم به خطأ؟

<html>
<head>
<title>IE doesn't see Object element?</title>
<script type="text/javascript">
function byId()
{
    var video = document.getElementById("VideoPlayer");
    alert(video);

}
function lengthOfByTagName()
{
    var length = document.getElementsByTagName("object").length;
    alert(length);

}
</script>

</head>
<body>
    <object type="" id="VideoPlayer">
        <param name="allowScriptAcess" value="always" />
        <param name="allowfullscreen" value="true" />
        VideoPlayer element
    </object>
    <br>
    <br>
    <a href="#" onclick="javascript:byId()">getElementById("VideoPlayer")</a>
    <br>
    <a href="#" onclick="javascript:lengthOfByTagName()">getElementsByTagName("object").length</a>
</body>
</html>
هل كانت مفيدة؟

المحلول

وهذا هو بسبب الطريقة التي يعامل IE <كائن> العقد وجها لوجه مع DOM.

ومنذ كنت استبدال حيوي على أي حال أنصحك بدلا إنشاء

حيث كنت في حاجة إليها وتغيير HTML داخلي ليكون HTML للكائن التي تحتاجها.

نصائح أخرى

ولقد اختبرت فقط على IE 7 وينظر إلى السلوك كما هو موضح

وInternet Explorer لا يتوقع النص الحر في علامة <object>. باستخدام Debugbar عليك عينة prooved أن IE لا تبني الحق شجرة DOM.

استخدم هذا الرمز بدلا من ذلك

<object type="" id="VideoPlayer">
    <param name="allowScriptAcess" value="always" />
    <param name="allowfullscreen" value="true" />
</object>

وأنه سوف يعمل كما هو متوقع.

في IE6، فإنه قد لا تعمل. للإشارة: <لأ href = "https://msdn.microsoft.com/en-us/library/ie/ms536437٪28v=vs.85٪29.aspx؟f=255&MSPPError=-2147217396" يختلط = "نوفولو" > https://msdn.microsoft.com/en-us/library/ie/ms536437٪28v=vs.85٪29.aspx؟f=255&MSPPError=-2147217396 <لأ href = "HTTP: // note.taable.com "يختلط =" نوفولو "> مجلة

وأقترح استخدام على مسج لمعالجة معظم الحالات

jQuery

var video = $("#VideoPlayer");

alert(video);

وجرب هذا في الترميز الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top