1. 程式人生 > >jq獲取iframe中的內容

jq獲取iframe中的內容

這裡需要說明的是,非同源的iframe涉及跨域,我還沒有遇到過,理論上是不能對沒有許可權的非同源iframe中內容進行操作的。
大部分同源情況下,$(window.frames[id].document)可以獲取到iframe裡面的document,接下來就是基本的dom操作。

另外,需要注意的是:如果你用了上面的程式碼沒有獲取到想要的內容,請思考如下問題:
1:你要操作的iframe中的dom節點,在函式執行的時候刷新出來了嗎?
如果沒有刷新出來,你是無論如何也獲取不到的。可以用iframe的onload事件來判斷是否重新整理完成,或者用定時器,具體問題具體分析。
2:如果你要繫結事件,那麼dom節點重新整理了之後,事件還存在嗎?答案是重新整理了之後繫結在dom節點上的事件就相當於沒了,需要利用事件委託,把事件繫結在不會變動的父節點上。

另一個方法:這裡用我昨天在專案中的例子

//給iframe中的表格新增點選事件,點選表格,獲取表格的內容
$("iframe[id='iframe_table']").on("load",function(){
            var iframeWindow=$("iframe[id='iframe_table']")[0];//這裡的[0]是jq的方法,得到的是js節點,不是jq物件,等同於window.frames['iframe_table']
            $(iframeWindow.contentWindow.document). find("table").parent().on("click"
,function(e){ alert(e.target.innerHTML); }); });