下面的代码显示了问题。它创建了一个简单的iframe。
在除IE之外的浏览器上,如果url设置为http:[4 slashes] test.com而不是http:[two slashes] test.com,iframe将显示错误。在IE上,父页面重定向到错误页面。
我在其他人的网站的小部件中使用iframe,这可能会在出现错误时造成大量损害。我的问题是如何避免这样做,所以如果SRC网址错误,错误将保留在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);
答案 0 :(得分:1)
您可以尝试这样的方法来清理网址,只有在网址有效时才尝试弹出内容:
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
}
答案 1 :(得分:0)
要阻止重定向,您可以尝试此操作。
popup = window.document.createElement('div');
popup_html="<div style='width:300px;height:300px; ' >";
popup_html+=" <iframe id='myframe' src='' width='300' height='300' frameborder='0' ></iframe>";
popup_html+=" </div>";
popup.innerHTML=popup_html;
//cbar_popup.style.visibility='visible';
window.document.body.appendChild(popup);
document.getElementById('myframe').src="http:////www.test.com";
我不知道它发生的真正原因。我正在分析ieframe.dll调用的js。如果我发现任何与此相关的内容,我会更新我的答案。