سؤال

<html>
   <script type="text/javascript">
      function func() {
         alert(document.getElementById('iView').contentDocument);
      }    
   </script>
   <body>
      <iframe id="iView" style="width:200px;height:200px;"></iframe>
      <a href="#" onclick="func();">click</a>
   </body>
</html>

بعد النقر، إرجاع Firefox [كائن HTMLDocument]. إرجاع Internet Explorer غير محدد.

كيف يمكنني تحديد عنصر Iview مع Internet Explorer؟ شكرا.

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

المحلول

من هذه الصفحة:

يدعم Mozilla مستوى W3C من الوصول إلى كائن مستند IFRAME من خلال IFRameELM.ContentDocument، في حين يتطلب منك Internet Explorer الوصول إليه من خلال المستند .Frame ["الاسم"] ثم الوصول إلى المستند الناتج.

لذلك تحتاج إلى الكشف عن المتصفح وعلى أي فعل شيء مثل هذا بدلا من ذلك:

document.frames['iView'].document; 

نصائح أخرى

المتصفح عبر المكافئ contentDocument (بما في ذلك فايرفوكس نفسه، حيث contentDocument هل العمل هو contentWindow.document.

لذا حاول:

alert(document.getElementById('iView').contentWindow.document);

contentWindow يحصل لك مرجع إلى iframe window كائن، وبالطبع .document هو مجرد كائن مستند DOM ل IFRAME.

إليك مقال يلخص أفضل.

يبدو أنك تريد الحصول على محتويات IFRAME الصحيح؟

IE7 و FF2:

var iframe = document.getElementById('iView');
alert(iframe.contentWindow.document.body.innerHTML);

استخدام ميزة الكشف، كما contentDocument مدعوم في IE 8:

var iframe = document.getElementById("iView");
var iframeDocument = null;
if (iframe.contentDocument) {
    iframeDocument = iframe.contentDocument;
} else if (iframe.contentWindow) {
    // for IE 5.5, 6 and 7:
    iframeDocument = iframe.contentWindow.document;
}
if (!!iframeDocument) {
    // do things with the iframe's document object
} else {
    // this browser doesn't seem to support the iframe document object
}
contentWindow.document.body.innerHTML

يعمل بالنسبة لي في Internet Explorer و Firefox، في حين

contentDocument.body.innerHTML

سوف تعمل فقط في فايرفوكس.

افعل شيئا مثل هذا:

var myFrame = document.getElementById('iView');
var frameDoc = myFrame.contentDocument || myFrame.contentWindow;

if (frameDoc.document){
  frameDoc = frameDoc.document;
}

alert(frameDoc);

يرى هذه الصفحة لمزيد من التفاصيل

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