我正在使用Firefox并在页面上打开Firebug,使用Knockout构建一个屏幕。
在一个非常特殊的情况下,我从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 ...)
答案 0 :(得分:0)
无响应的脚本是当脚本需要很长时间并且附加了防火bug时,它会稍微慢一点,使得成功和超时之间有所区别,你可以忽略错误,错误是在不同的位置,因为它可以运行不同直到超时的代码量。
但是你的脚本要接近超时,所以检查一下你是否可以优化它。