終了ポップアップのあるページを埋め込んでいます。ページを閉じると、ポップアップウィンドウが自動的に起動します。
終了時にiframeからのポップアップを無効にする方法は?
ポップアップ広告のようなものや、IFRAMEに表示しているWebサイトからの何かをブロックしたい場合は、かなり簡単です。
Iframeが指すframefilter.phpおよびjavascriptfilter.phpを作成します。 onload blah blahなどのニーズに合わせて変更できます。しかし、現状のままで、かなり長い間問題なく動作しています。それが役に立てば幸い。
標準のIFRAMEHTMLを次のように置き換えます。
<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;
}
?>
かなり古い質問ですが、これはグーグルで最高の結果なので、私は新しい解決策を提供すると思いました。
Iframeがウィンドウを開くのをブロックしたい場合は、iframeで新しいHTML5「サンドボックス」属性を使用できます。
https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe
これにより、何も実行されなくなります(ページが正しく機能するために必要なJavaScriptの実行を除く)。
<iframe sandbox="allow-scripts" src="your/url/here"></iframe>
IFrame要素にサンドボックス属性を設定すると機能するはずです。
これは不可能だと思います。
私が見る唯一の可能性は、本質的に非技術的なものです。iframe内でそのサイトを運営している人に、そのようなonunloadポップアップのない特別なページを作成できるかどうかを確認してください。ほとんどの場合、どちらか
実際、これはis可能です。少なくとも多くの場合。多くの場合、iframe内のコードは、ポップアップを開くためにtop.window.open(...)
のようなものを実行します。 window.openメソッドを再定義して、まだ存在しているが、ウィンドウを開かないようにすることができます。例えば。:
`window.alias_open = window.open;
window.open = function(url、name、specs、replace){//何もしないか、何か賢いことをする...} `
それでもいくつかのポップアップを開きたい場合は、window.open
の本文内のURLをホワイトリストに登録し、必要に応じてalias_open
を呼び出すことができます。
これがうまくいくかどうかはわかりませんが、ダブルイフラミングを試すことができます。無料のブロガーアカウントでサイトをiframeしてから、コードの読み込みを遅らせてブロガーアカウントをiframeします。そのため、ページが読み込まれる前にポップアップが表示され、機能するかどうかをお知らせください。