Firefox не может найти iframe - PullRequest
       16

Firefox не может найти iframe

1 голос
/ 06 апреля 2009

Это фрейм, к которому я пытаюсь получить доступ:

 <div class="mceBody" id="additionalTxt_b">
        <iframe frameborder="0" id="additionalTxt_f" src='javascript:""' class="punymce"/>
 </div>

Используя эту строку:

frames['additionalTxt_f'].document.getElementsByTagName("body")[0].innerHTML

По какой-то причине я получаю "frames.additionalTxt_f is undefined" из firebug. У меня есть подобные iframes (динамически создаваемые плагином punyMCE) на других страницах, и они работают отлично. И IE7 / 8 также не имеет проблем с доступом к этому iframe.

Просто в полной растерянности. Любые идеи о том, почему Firefox не может найти iframe?

Ответы [ 2 ]

8 голосов
/ 06 апреля 2009

Массив window.frames[] индексируется атрибутом name фрейма [i] frame (он же цель фрейма). id нельзя полагаться также на работу - хотя это может быть в IE <8, который часто думает, что имена и идентификаторы - это одно и то же. </p>

Если вы хотите получить доступ к содержимому фрейма через идентификатор, используйте свойство HTML contentDocument DOM уровня 2 вместо старой школы («Уровень 0 DOM») frames массив:

document.getElementById('additionalTxt_f').contentDocument.body.innerHTML

... но для совместимости с IE <8 также необходимо добавить запасной вариант, поскольку он не поддерживает <code>contentDocument:

var f= document.getElementById('additionalTxt_f');
var d= f.contentDocument? f.contentDocument : f.contentWindow.document;
d.body.innerHTML

Так что вам решать, какой метод вы считаете менее уродливым: дополнительный сценарий или просто использование атрибута name.

1 голос
/ 06 апреля 2009

если у вас есть только 1 iframe, вы также можете найти его с помощью window.frames [1] или document.getElementsByTagName ( 'IFrame') [0]

(в первом варианте родительское окно - # 0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...