回答
使用新型瀏覽器 - 他們都配有體面的彈出窗口攔截功能
對不起 - 爲什麼要投票?您想知道如何禁用彈出窗口 - 使用現代瀏覽器禁用這些功能 – 2010-12-16 14:20:17
在這種情況下,請勿嵌入具有不良行爲的代碼 – 2010-12-16 15:23:45
我不認爲這是可能的。
- 首先(也是最重要的),如果iframe位於不同的域中,則不能更改其DOM - 例如onunload處理程序。如果是這樣,另外兩個問題是沒有意義的。
- 秒,即使可以,您也必須以某種方式刪除偵聽器。如果偵聽器是通過window.onunload加載的,那很簡單;否則,不是那麼多。
- 第三,從長遠來看,這將導致相同的軍備競賽的frame-busting-busters
我看到的唯一的可能性是在本質上非技術:與誰如果他們能運行該站點的iframe中檢查爲你製作一個特殊頁面,一個沒有這樣的onunload彈出窗口。在大多數情況下,無論是
- 一)一些特殊的安排可以使(但並不總是免費的),或
- b)去除功能將違反本服務條款,在這種情況下,你必須尋找其他人提供類似的功能,沒有彈出窗口(實際上,大多數服務都不止一個提供商)
我不確定這是否會工作,但你可以嘗試雙Iframing。 iframe將該網站放在免費的博客賬戶中,然後將iframe中的博客賬戶加入延遲加載代碼。所以彈出窗口會在頁面加載之前發生,讓我知道它是否有效。
實際上,這個是可能的。至少在很多情況下。通常,iframe中的代碼將運行諸如top.window.open(...)
之類的代碼來打開彈出窗口。您可以重新定義window.open方法,使其仍然存在,但不會打開窗口。例如:
` window.alias_open = window.open;
window.open =功能(URL,名稱,規格,更換){// 什麼都不做,或者做一些智能... } `
如果你還是想一些彈出窗口打開,您可以將window.open
正文中的網址列入白名單,並根據需要撥打alias_open
。
如果您想要阻止類似POP的廣告或來自您在IFRAME中顯示的網站的內容 - 這相當容易。
做一個framefilter.php和javascriptfilter.php,你的iframe的點。 您可以對其進行修改以滿足您的需求,例如onload等等等等。 但是,作爲/是 - 它對我來說一直工作很好。希望能幫助到你。
這個替換你的標準IFRAME HTML:
<IFRAME SRC="http://www.yourdomainhere.com/framefilter.php?furl=http://www.domainname.com" WIDTH=1000 HEIGHT=500>
If you can see this, your browser doesn't
understand IFRAMES. However, we'll still
<A HREF="http://www.domainname.com">link</A>
you to the page.
</IFRAME>
Framefilter.php
<?php
//Get the raw html.
$furl=trim($_GET["furl"]);
$raw = file_get_contents($furl);
$mydomain="http://www.yourdomainhere.com/";
//Kill anoying popups.
$raw=str_replace("alert(","isNull(",$raw);
$raw=str_replace("window.open","isNull",$raw);
$raw=str_replace("prompt(","isNull(",$raw);
$raw=str_replace("Confirm: (","isNull(",$raw);
//Modify the javascript links so they go though a filter.
$raw=str_replace("script type=\"text/javascript\" src=\"","script type=\"text/javascript\" src=\"".$mydomain."javascriptfilter.php?jurl=",$raw);
$raw=str_replace("script src=","script src=".$mydomain."javascriptfilter.php?jurl=",$raw);
//Or kill js files
//$raw=str_replace(".js",".off",$raw);
//Put in a base domain tag so images, flash and css are certain to work.
$replacethis="<head>";
$replacestring="<head><base href='".$furl."/'>";
$raw=str_replace($replacethis,$replacestring,$raw);
//Echo the website html to the iframe.
echo $raw;
?>
javascriptfilter.php
<?php
//Get the raw html.
$jurl=trim($_GET["jurl"]);
$raw = file_get_contents($jurl);
//Note, if trickyness like decode detected then display empty.
if(!preg_match("decode(", $raw)){
//Kill anoying popups.
$raw=str_replace("alert(","isNull(",$raw);
$raw=str_replace("window.open","isNull",$raw);
$raw=str_replace("prompt(","isNull(",$raw);
$raw=str_replace("Confirm: (","isNull(",$raw);
//Echo the website html to the iframe.
echo $raw;
}
?>
您應該更換'isNaN('cause'isNull()'未定義。 – 2015-06-15 20:16:22
你的替代品應該考慮一個包含func名字和括號之間的空格的情況,最好使用:'$ raw = preg_replace(「#alert [] {0,} \\(#i」,「isNaN(」,$ ');' – 2015-06-15 20:18:16
你的preg_match無效。應該是:'if(empty(preg_match(「#decode \\(#i」,$ raw))){' – 2015-06-15 20:19:16
設置沙箱屬性上IFrame元素應該工作。
一個很老的問題,但我想我會提供一個更新的解決方案,因爲這是谷歌的最高結果。
如果您想阻止打開窗口的iframe,您可以在iframe上使用新的HTML5「沙盒」屬性。
https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe
這應該保持它做任何事情(除了運行可能需要對頁面的JavaScript才能正常工作):
<iframe sandbox="allow-scripts" src="your/url/here"></iframe>
- 1. 如何阻止來自BHO的window.showModalDialog彈出窗口?
- 2. 阻止與非阻止彈出窗口
- 3. 阻止來自相同域的彈出窗口
- 4. 阻止彈出窗口的腳本
- 5. 如何阻止我的Facebook共享窗口被彈出窗口阻止程序阻止?
- 6. 每次彈出窗口被阻止時
- 7. FB.login限制彈出窗口阻止
- 8. 頁面,而不彈出窗口阻止
- 9. 合法避免彈出窗口阻止
- 10. Twitter登錄彈出窗口被阻止
- 11. 彈出窗口阻止調試模式
- 12. 如果Internet Explorer自動關閉彈出窗口阻止程序
- 13. 檢測阻止的彈出窗口而不打開彈出窗口
- 14. 如何防止iframe內的彈出窗口?
- 15. Liferay IFrame彈出窗口
- 16. 與ASP.Net按鈕彈出窗口點擊,不彈出窗口阻止程序
- 17. wp7彈出窗口阻止彈出文本框
- 18. 顯示在瀏覽器窗口頂部的彈出窗口,如果彈出窗口阻止程序啓用
- 19. 的UIWebView阻止彈出窗口,也阻斷了原來的網站
- 20. Powershell爲什麼彈出窗口,如何阻止它
- 21. 如何在打印時避免彈出窗口阻止程序
- 22. 如何使用webdriver阻止所有彈出窗口?
- 23. Window.Open被彈出窗口阻止,如何修復?
- 24. 當我玩swf遊戲時如何阻止聊天窗口彈出窗口?
- 25. 如何阻止鼠標退出窗口?
- 26. 如何測試一個命名窗口是否被打開或被彈出窗口阻止程序阻止?
- 27. 來自VB的Web彈出窗口?
- 28. 如何檢測到我的彈出窗口失敗(由於彈出窗口阻止程序)?
- 29. jQuery iframe彈出窗口和父窗體
- 30. 爲什麼IE8阻止出現在IE7中的彈出窗口?
Parhaps你應該對你的問題 – 2010-12-16 14:33:32
闡述不嵌入有你不喜歡的行爲的頁面。 – Quentin 2010-12-16 14:37:39
他問一個合法的問題... 「不嵌入代碼與不良行爲」是一個不好的回答 讓我看看....你怎麼編碼這個或那個....以及不要編碼它..成爲一名水管工...有問題解決了.... 我有同樣的問題......我沒有奢侈的告訴我的老闆像...好吧,我們只是不嵌入它.... 保羅..你有沒有解決這個問題...? – 2011-02-10 12:04:48