確切的問題是如何使用純JavaScript不使用jQuery做。
我一直使用可以在jQuery的源代碼中找到了解決辦法。 這只是一行和純JavaScript。
對我來說這是最好的,甚至得到I幀內容的最短途徑。
首先讓你的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中該iframe
對象的contentWindow
財產過程中做到這一點伎倆。大多數其他瀏覽器使用contentDocument
屬性,這就是爲什麼我們在此OR條件中首先證明此屬性的原因。如果沒有設置,請嘗試contentWindow.document
。
然後通常可以使用getElementById()
甚至querySelectorAll()
從一個iframeDocument
選擇DOM的元素:
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)。 – 2014-01-01 01:42:05