3

在我在 Windows Server 2012 上使用 jquery/bootstrap/knockout IE10 的站点上(虽然在 Win2008 等上发生了同样的错误,但大部分都使用它进行了测试)IE 抛出一个错误,指出增强的安全配置阻止了来自about:blank.

IE 认为来自about:blank什么?

<noscript>在页面上放了一个可以正常工作的页面,而页面本身不在正常的安全区域中,但是未选中该页面的人Continue to prompt...将永远不会看到任何错误,并且该站点的某些部分将停止工作,而其他部分则可以正常工作。

电调

4

1 回答 1

4

经过一行一行的调试,我发现下面的条件组合导致了错误。这可能不是唯一的原因,但它也允许我编写向用户显示警告的代码。

// 1. create an element but do not add it to the DOM
var elem = document.createElement("div");
// 2. set its innerHTML to something that contains script. 
//    in this line IE shows the error although the code continues.
elem.innerHTML = "<span onclick=\"alert()\">aa</span>";

// 3. add to the DOM
document.body.appendChild(elem);
// in order to fix the issue, move item #3 right after #1.

如果在设置之前将元素添加到 DOM .innerHTML,则可以正常工作。需要注意的是代码实际上已经完成,并且在它之后,如果您检查.innerHTML,您实际上会看到onclick处理程序完好无损。问题是当你点击元素时它不会被解析并且不会被执行。

因此,我使用它创建了以下代码,向用户显示警告。

var test = document.createElement("div");
test.innerHTML = "<span onclick=\"window.B264E0BD67794ED9949FCF91D654F54F=1;\"></span>";
test.getElementsByTagName("span")[0].click();
if (!window.B264E0BD67794ED9949FCF91D654F54F)
    alert("Your browser is configured to use Enhanced Security Configuration which is not compatible with this website.");
于 2013-11-07T14:31:29.513 回答