2009-01-19 52 views
2

在我的電腦上,我使用的是基於HOSTS重定向的自定義adblock(因此我可以在Chrome中使用adblock)。我在我的機器上運行IIS,因此我在頁面上顯示基於iframe的廣告時顯示自定義空白404錯誤。從IFrame源內改變IFrame屬性。可能嗎?

我修改了我的404錯誤以從其父項繼承其背景顏色,以便在非白色背景的網站上看起來不令人討厭。我的下一個挑戰是使用我的404頁面來完全摺疊iframe,這樣它就不會顯示在頁面上。

是否可以更改iframe中包含的<iframe />標記?如果這是可能的,我只想改變高度&寬度屬性。如果是這樣,我將如何去做這件事?

+0

但是如果我們使用相同的域呢?我的意思是iframe與父代在同一個域上? – 2010-05-05 14:29:56

+0

然後你可以用JavaScript修改iframe。如果您位於同一個域中,則只能訪問父頁面。如果您位於子域,則瀏覽器會認爲域不同並會阻止訪問。 – 2010-05-05 14:46:33

回答

3

應該不可能,因爲iframe中的網站可以是外部網站。允許他們操縱他們顯示的環境將是瀏覽器安全風險。

你最好使用adblocking代理。

+0

除非我遺漏了一些東西,否則adblocking代理將與我現在使用的基本相同。我只是試圖找出一種方法來摺疊IFRAME區域,但它是有道理的,這是不可能的。 – 2009-01-19 02:11:01

0

如果我正確理解你,你說你想讓你的404頁面在內部加載時觸發iframe的崩潰。最簡單的方法是在父頁面中創建一個函數,然後在加載時從404調用它。

例如,如果你的iframe的ID爲「advertFrame」你可以在下面的JavaScript函數添加到父頁面:

function hideAdvertFrame() { 
    var advertFrame = document.getElementById("advertFrame"); 
    advertFrame.style.height = 0; 
    advertFrame.style.width = 0; 
} 

然後在404頁,您可以立即調用函數時,它加載:

<body onload="window.parent.hideAdvertFrame();"> 

這麼說,我覺得你還是可能要考慮是不容易的安全漏洞除了跨框架腳本的其他選項。也許你的父頁面可以使用AJAX來檢查adblock在載入之前是否有一個有效的URL,然後在確定後動態地將它添加到頁面中。

0

填充iframe的頁面無法更改有關包含iframe的頁面的任何內容。如果可能的話,那將是一個巨大的安全風險。可以肯定的是,我嘗試了使用我在學校獲得的兩個域名所要求的內容。簡而言之,它不起作用;我在Firebug中獲得了許可被拒絕的錯誤。