1

我正在使用 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 ......)

4

1 回答 1

0

无响应的脚本是当脚本花费很长时间并且附加了火灾错误时它会变慢一点,这会导致成功和超时之间的差异,您可以忽略错误,它位于不同位置的错误,因为它可以运行不同数量的代码直到超时。

但是您的脚本即将超时,因此请检查是否可以优化它。

于 2013-05-09T11:03:14.803 回答