我正在使用 Firefox 构建一个带有 Knockout 的屏幕,并在页面上打开 Firebug。
在一个非常特殊的情况下,我从 Firefox 收到一个无响应的脚本错误,经过大量测试后,我将其范围缩小到仅在 Firebug 打开时才发生这种特定情况。当它关闭时,我没有收到错误消息。
在多次使用此错误单步执行 Knockout 调试 js 后,我发现第一个“无响应脚本”弹出窗口出现在处理结束注释 (1807) 附近
setDomNodeChildren: function(node, childNodes) {
if (!isStartComment(node))
ko.utils.setDomNodeChildren(node, childNodes);
else {
ko.virtualElements.emptyNode(node);
var endCommentNode = node.nextSibling; // Must be the next sibling, as we just emptied the children
for (var i = 0, j = childNodes.length; i < j; i++)
endCommentNode.parentNode.insertBefore(childNodes[i], endCommentNode);
}
},
或接近 1728,这也接近关于结束评论的工作
function isEndComment(node) {
return (node.nodeType == 8) && (commentNodesHaveTextProperty ? node.text : node.nodeValue).match(endCommentRegex);
}
但它每次都在不同的位置,如果我在无响应的脚本弹出窗口上单击“继续”,我就可以继续前进。
在没有 Firebug 的情况下运行不会出错,在 Chrome 中使用或不使用开发人员工具运行都不会出错。
我不知道该尝试什么或发布什么代码来帮助解决我的问题,因为我使用 Firefox 和 Firebug 使用 Knockout 制作了许多屏幕,这是我第一次遇到这样的问题。
但我非常感谢有关如何让萤火虫停止导致此问题的任何提示或建议。(虽然也许我只需要迁移到 Chrome ......)