javascript - IE 10 + KnockoutJS = HierarchyRequestError?

标签 javascript internet-explorer knockout.js

我已经尽可能地简化了我的问题。它仅发生在 Internet Explorer 中(已确认 9 和 10)。我有一个用这个呈现的页面:

<html>
<body>

    <span data-bind="text:$data[0].Mileage"></span>
    <script type="text/javascript">
        window.initChild = function (ko, viewModel) {
            window.ko = ko;
            ko.applyBindings(viewModel, document.body);
        }
    </script>
</body>
</html>

我的 SPA 电话

    var otherWindow = window.open('myurl', '_blank');
    var handler = function () {
        otherWindow.initChild(ko, report);
    };
    if (otherWindow.addEventListener) {
        otherWindow.addEventListener('load', handler, false);
    } else if (otherWindow.attachEvent) {
        otherWindow.attachEvent('onload', handler);
    }

我检查过,数据到达initChild方法没问题。

如果我在页面上绑定(bind)任何东西,我会在 applyBindings 调用上收到 HierarchyRequestError。我的 google-fu 完全放弃了我,我完全不知道出了什么问题。

最佳答案

据我所知,这是这个问题的症状:Using Javascript objects across separate windows in IE

基本上,无论我如何将 ko 对象传递给子窗口,某些东西 都丢失了,当我尝试应用绑定(bind)时,ko 本身遇到了 DOM 跟踪错误,并试图插入一些东西到它不应该有的地方(可能是父 DOM 到子 DOM 的一部分)。

解决方案有两个:

  • 将 ko(和 ko.mapping)脚本添加到子窗口,使其拥有自己的 ko 对象
  • 使用 ko.mapping 将模型序列化为 JSON,将字符串传递给子窗口并反序列化。

糟糕的行为,IE...

如果有人能就为什么会发生这种情况提出实际解释,我会接受他的回答。

关于javascript - IE 10 + KnockoutJS = HierarchyRequestError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18150604/

相关文章:

JQuery UI 菜单 float 右侧图标导致 Internet Explorer 中出现新行

javascript - IE11 上的 "Error: Invalid argument."

html - 如何解决html页面在firefox和chrome上运行正常,在IE上运行不正常的问题?

javascript - 使用 Knockout JS 进行数据绑定(bind)不起作用

javascript - Knockout.js 删除不适用于主视图模型中的嵌套 View 模型和 View 模型

javascript - 在 svelte 中,当变量发生变化时如何 `console.log(' yes')`?

javascript - 更改 anchor 链接文本大小和颜色

javascript - 调试帮助 JavaScript 和 HTML

javascript - knockout.js:在 observableArray 上没有连接

javascript - JS Date() 返回正确的时区但错误的日期