2013-03-09 102 views
1

有什麼辦法阻止特定的HTML元素被創建到IFrame中?阻止iframe中的任意元素

我沒有使用JQuery,但我不介意使用它。

我的基本代碼如下:

<iframe id="id_frame_01" src="somepage"></iframe> 
<script type="text/javascript> 

frame = document.getElementById('id_frame_01').contentWindow.document; 

frame.onload = function(){ 
    var toremove = frame.getElementsByTagName('iframe'); 
    toremove.outerHTML = ''; 
    toremove = frame.getElementsByTagName('object'); 
    toremove.outerHTML = ''; 
} 

</script> 

我已經完全進入iframe的內容,但如果我嘗試onload事件後手動刪除的元素,onload事件是路太遠, (示例)YouTube視頻開始播放。

我知道要刪除的元素的ID,但我不喜歡使用它們,因爲網站「更新」可能會破壞系統。相反,我更喜歡按元素類型進行過濾。

這是一個瀏覽器專用頁面,僅限Chrome瀏覽器。

有沒有辦法將onchange事件附加到非創建的元素?

有沒有辦法攔截元素的加載?

+1

它*可能*可以用[x-tags項目](http://x-tags.org/index)使用的技巧來做些事情。 – Pointy 2013-03-09 16:58:48

+1

事實上,我發現我可以使用'frame.addEventListener(「DOMNodeInserted」,function(){...})',即使事實上我間接發現了在x-tags項目頁面上。那麼謝謝你! – SGH 2013-03-09 17:17:07

+1

請注意,像DOMNodeInserted這樣的事件已被棄用https://developer.mozilla.org/en-US/docs/Mozilla_event_reference – Christophe 2013-03-10 00:07:18

回答

1

不是直接將頁面加載到iframe中,而是可以使用ajax(或帶有jQuery的$ .ajax)。這將允許您過濾頁面html並只注入您希望用戶看到的內容。

你說你可以完全訪問iframe內容,所以我假設你的實現遵循same origin policy

+0

它的確如此,因爲我在標籤列表中放入了允許同源的東西。無論如何,這似乎是一個好主意,即使我不得不做更多的「玩」來從HTML代碼中手動刪除元素。無論如何,我喜歡低級作品。如果我幾天內沒有收到任何其他答案,我會盡量記住將你的答案標記爲最佳答案。 – SGH 2013-03-10 15:21:43

+1

看看jQuery $ .load,它可以讓你選擇你想要的元素(而不是過濾出你不想要的元素)。 – Christophe 2013-03-11 00:22:55

+0

頁面可悲地改變了很多次,並且內部元素也改變了ID,類型等。我想我會堅持唯一的答案。 – SGH 2013-03-12 13:02:21