Я встраиваю страницу со всплывающим окном выхода. Когда вы закрываете страницу, автоматически открывается всплывающее окно.
Как отключить всплывающие окна, появляющиеся из iframe при выходе?
Я встраиваю страницу со всплывающим окном выхода. Когда вы закрываете страницу, автоматически открывается всплывающее окно.
Как отключить всплывающие окна, появляющиеся из iframe при выходе?
Если вы хотите заблокировать что-то вроде всплывающей рекламы или что-то, исходящее с веб-сайта, который вы показываете в IFRAME, это довольно просто.
Создайте framefilter.php и javascriptfilter.php, на которые указывает ваш iframe. Вы можете изменить его в соответствии с вашими потребностями, такими как onload blah blah и т. Д. Но как / есть - он работал у меня в течение довольно долгого времени. Надеюсь, поможет.
Замените свой стандартный HTML-код IFRAME следующим:
<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(
, потому что isNull()
не определено.
- person Shlomi Hassid; 15.06.2015
$raw=preg_replace("#alert[ ]{0,}\\(#i","isNaN(",$raw);
- person Shlomi Hassid; 15.06.2015
if(empty(preg_match("#decode\\(#i", $raw))) {
- person Shlomi Hassid; 15.06.2015
Довольно старый вопрос, но я подумал, что предложу более новое решение, так как это лучший результат в Google.
Если вы хотите запретить iframe открывать окна, вы можете использовать новый атрибут HTML5 "sandbox" в своем iframe.
https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe
Это должно удерживать его от каких-либо действий (кроме запуска javascript, который может потребоваться для правильной работы страницы):
<iframe sandbox="allow-scripts" src="your/url/here"></iframe>
Я не думаю, что это возможно.
Единственная возможность, которую я вижу, носит нетехнический характер: узнайте у тех, кто запускает этот сайт внутри iframe, могут ли они создать для вас специальную страницу без такого всплывающего окна onunload. В большинстве случаев либо
Собственно, это возможно. По крайней мере, во многих случаях. Часто код в iframe будет запускать что-то вроде top.window.open(...)
, чтобы открыть всплывающее окно. Вы можете переопределить метод window.open, чтобы он все еще существовал, но не открывал окно. Например.:
`window.alias_open = window.open;
window.open = function (url, name, specs, replace) {// Ничего не делать или делать что-то умное ...} `
Если вы по-прежнему хотите, чтобы всплывающие окна открывались, вы можете добавить URL-адреса в белый список в теле window.open
и при необходимости вызвать alias_open
.
Установка атрибута песочницы в элементе IFrame должна работать.
Я не уверен, что это сработает, но вы можете попробовать удвоить iframing. Если вы разместите сайт в бесплатной учетной записи blogger, затем установите iframe в учетную запись blogger с кодом задержки загрузки. так что всплывающее окно появится до загрузки страницы, дайте мне знать, работает ли оно.
Используйте современный браузер - все они обладают хорошими возможностями блокировки всплывающих окон.