不安全的javascript尝试没有被try块捕获

时间:2012-08-21 12:29:39

标签: javascript try-catch

我的iframe嵌套在主页面中。 iframe包含以下脚本:

var adfoxPlaceholderId = 'placeholder';
var adfoxWindow = window;
var adfoxDocument = window.document;
var adfoxPlaceholder = adfoxDocument.getElementById(adfoxPlaceholderId);

try {
    while((adfoxPlaceholder == null) && (adfoxWindow != window.top)) {
        adfoxWindow = adfoxWindow.parent;
        adfoxDocument = adfoxWindow.document;
        adfoxPlaceholder = adfoxDocument.getElementById(adfoxPlaceholderId);
    }
} catch(ex) {
    console.log('catch-block');
}

由于安全策略(iframe和主页来自不同的URL),脚本在adfoxDocument = adfoxWindow.document;行上断开。 我的问题是为什么catch块没有抓住这个错误,好像它没有被放入try-catch块?谢谢。

2 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为它不是javascript例外。这是一个浏览器安全功能。发生这种情况是因为您的iframe和您的网站没有相同的网址。

可以找到同源政策的来源here

话虽如此,有办法通过第三方工具或javascript技巧“规避”这项政策

这里有几个选项“

easyXDM

ways-to-circumvent-the-same-origin-policy

我希望有帮助

答案 1 :(得分:0)

在我的测试中不会发生这种情况。在IE,FF,Chrome和Safari上进行测试。错误不在您在问题中发布的代码中。

http://jsfiddle.net/hg2cs/1/