1

以下のコードは問題を示しています。シンプルな iframe を作成します。

IE 以外のブラウザで、URL が http:[2 つのスラッシュ] test.com ではなく http:[4 つのスラッシュ] test.com に設定されている場合、iframe はエラーを表示します。IE では、親ページがエラー ページにリダイレクトされます。

他の人の Web サイトのウィジェットで iframe を使用していますが、エラーが発生した場合、多くの損害が発生する可能性があります。私の質問は、どのように回避できるかということです.SRC URLが悪い場合、エラーはiframeに残り、ページ全体がリダイレクトされません.

確認するには、コードを jsfiddle.net にコピーして実行します。

popup = window.document.createElement('div');
popup_html="<div style='width:300px;height:300px; ' >";
popup_html+=" <iframe src='http:////www.test.com' width='300' height='300' frameborder='0' ></iframe>";
popup_html+=" </div>";
popup.innerHTML=popup_html;
//cbar_popup.style.visibility='visible';
window.document.body.appendChild(popup);
4

2 に答える 2

1

次のような方法で URL を消去し、URL が有効な場合にのみポップアップを試行できます。

var url = 'http:////stackoverflow.com/questions/16076720/ie-entire-page-redirects-if-iframe-src-is-set-with-bad-url';
var result = /^(?:(?:http[s]?:\/{2,4})?(?:www\.)?)?([\w-_]+)\.([\w\.]+)([\/\?\w-_\=\"]*)/.exec(url);

if(result){
    url = 'http://'+result[1]+'.'+result[2]+result[3];
    console.log(url);
    // do the popup stuff here with cleaned up url
}
于 2013-04-18T08:59:02.220 に答える