2013-12-09 22 views
0

如何獲取iframe的引用(如果我擁有iframe的contentWindow)。 contentWindow是錯誤的目標。但是evt.target.parent只是給了我從iframe開啓的原始頁面開始的窗口(至少我認爲這是)。如何從內容中引用iframeWindows

我首先需要的iframe,然後IFRAME(表)的容器,因爲它擁有另一個對象,我需要訪問(一個textarea)

$.fn.setLine= function(target,errorline){ 

    var target=target; 

    var codeLinesDiv = target.parent.parent.parent.find(".codelines"); 
    codeLinesDiv.children().eq(errorline).css("background-color","red"); 

    } 

這會給出錯誤: 遺漏的類型錯誤:對象#有沒有方法的孩子

,如果我使用父()我得到: 遺漏的類型錯誤:房產‘對象的父’[對象全局]是不是一個函數 (我不明白這一點,爲什麼沒有按是否使用jQuery函數parent()?)

這就是我所說的功能的setLine

addIframeErrorListener= function(frame){ 

    handleError= function(evt){ 
    if(evt.message){ alert("error:"+evt.message+" lineNo:"+ evt.lineno); 
    $.fn.setLine(evt.target,evt.lineno);} 

    } 
    var win=(frame.contentWindow||frame.window); 
    addEventListener.call(win,"error",handleError,true); 

    } 

所以我的問題是:如何去從contentWindow到iframe和保存它的下一個containet。

+0

如果我理解正確,您正在編寫將訪問iframe內容之外的元素的代碼? – RealityDysfunction

+0

是的,iframe與texarea一起放在html頁面的表格中。我需要訪問texarea,或者更確切地說是使用codeline數字的div,它位於texarea – Jenita

回答

0

如果您的iframe和父頁面來自不同主機,則會導致iframe與父文檔之間的通信,因爲它會產生很大的安全漏洞。

但是,如果iframe和父母來自同一來源(例如:http://mycoolpage.com/iframeshttp://mycoolpage.com/parent)都可以使用parent.document.getElementById得到你需要的元素。

+0

是的,但是我也可以直接從contenWindow獲得對iframe和它所坐的表格的引用。因爲該頁面上有更多的iframe可以捕獲錯誤,而更多div使用class:codeLine,因此可以方便地引用iframe,然後tableit坐在裏面,這樣我就可以直接使用class找到正確的div:codeLines 。有沒有方法或財產從窗口獲得物理容器 – Jenita

+0

我不相信這是可能的。出於安全原因,瀏覽器嘗試儘可能地將iframe和父頁保持分離。如果頁面上有多個框架,則應該給他們特定的ID,以便您輕鬆識別和搜索。這看起來像我知道的很長一段路,但我認爲這可能是iframe受歡迎程度不高的原因。 – RealityDysfunction

+0

謝謝我做了你所說的,並使用框架的id來爲特定的div派生一個id(我確保div有相似編號的id),所以我可以找到它。很高興知道,除了通過框架和頁面的窗口之外,iframe與其所在頁面上的元素沒有關係。謝謝 – Jenita