получить элемент внутри iframe - PullRequest
2 голосов
/ 07 января 2011

Я хочу получить элемент тела 'tinymce', который расположен внутри фреймов в виде дерева, показанного ниже ..

html -> body -> div # wpwrap -> div # wpcontent -> div # wp-content-> div # wrap -> form # post -> div # editorcondainer -> div # poststuff -> div # post-body -> div # post-body-content -> div # postdivrich -> div # editiorcontainer -> span # content_parent -> table # content_tbl.mceLayout -> tbody -> tr -> td.mceIframeContainer.mceFirst.mceLast -> iframe # content_ifr -> html -> body # tinymce.mceContentBody

Для этого я использую код:

 var iframeEl = document.getElementById('content_ifr');
 alert(iframeEl);

 if ( iframeEl.contentDocument ) { // DOM

  var bdy = iframeEl.contentDocument.getElementById('tinymce');

 } else if ( iframeEl.contentWindow ) { // IE win

  var bdy = iframeEl.contentWindow.document.getElementById('tinymce');

 }

Но iframeE1 имеет значение null: (

Я пытаюсь использовать другие идентификаторыв дереве, но он перестает возвращать элементы из 'span id: content_parent', последний возвращающий id объект является 'div id: editorcontainer'

Как я могу получить элементы после 'span id: content_parent'

Ответы [ 3 ]

2 голосов
/ 07 января 2011

Попробуйте document.getElementById('content_ifr'); Приведенный выше код ищет document.getElementById(undef); (поскольку вы никогда не определяете переменную с именем content_ifr).

0 голосов
/ 12 января 2011

Если источник iframe не находится в том же домене, что и содержащая страница, у вас не будет доступа к содержимому iframe, так как они находятся в разных песочницах безопасности.

0 голосов
/ 07 января 2011

<iframe> создает новый контекст окна с новым документом. Поэтому присвойте <iframe> атрибут имени, например name="somename", чтобы вы могли получить к нему доступ следующим образом:

window.somename.document.getElementById('tinymce')

Если у вас нет доступа к HTML, вы можете сначала добавить имя через JS, например:

document.getElementById('tinymce').setAttribute('name','somename');

Некоторые исследования SO вызвали следующее: доступ к форме в iframe , которая объясняет, как это сделать только с идентификатором. Это должно суммировать возможности.

...