Точный вопрос заключается в том, чтобы сделать его чистым JavaScript не с JQuery.
Я всегда использую решение, которое можно найти в исходном коде jQuery. Это всего лишь одна строка и чистый JavaScript.
Для меня это лучший и даже самый короткий способ получить содержимое iframes.
Сначала получить IFRAME:
var iframe = document.getElementById('id_description_iframe');
// or
var iframe = document.querySelector('#id_description_iframe');
И затем использовать решение JQuery в:
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
Он работает даже в Internet Explorer, который делает этот трюк во время contentWindow
имущества iframe
объекта , Большинство других браузеров используют свойство contentDocument
, и именно по этой причине мы сначала подтверждаем это свойство в этом состоянии ИЛИ.Если он не установлен, попробуйте contentWindow.document
.
И тогда обычно вы можете использовать getElementById()
или даже querySelectorAll()
выбрать DOM-элемент из iframeDocument
:
var iframeContent;
if (iframeDocument) {
iframeContent = iframeDocument.getElementById('frameBody');
// or
iframeContent = iframeDocument.querySelectorAll('#frameBody');
}
функции вызова в IFRAME
Получить только window
элемент из iframe
для вызова некоторых глобальных функций, переменных или целых библиотек (например, jQuery
):
var iframeWindow = iframe.contentWindow;
if (iframeWindow) {
// you can even call jQuery or other frameworks if it is loaded inside the iframe
iframeContent = iframeWindow.jQuery('#frameBody');
// or
iframeContent = iframeWindow.$('#frameBody');
// or even use any other global variable
iframeWindow.inside_iframe_variable = window.outside_iframe_variable;
// or call a global function
var myReturnValue = iframeWindow.globalFunction(withParam);
}
Примечание
Все это возможно, если вы будете наблюдать за same-origin policy.
Важное примечание. Вы не можете получить доступ к содержимому iFrame, если это кросс-домен. См. [Политика одинакового происхождения] (http://en.wikipedia.org/wiki/Same-origin_policy). –