0

我有一个带有以下代码的 Firefox 插件:

$("table > tbody > tr > td[width='600']").wrapInner("<div id='content_cont' />");

那行代码执行,但它后面的所有行都没有。它会在 Firefox 错误控制台中抛出一个代码超过 500KB 的错误。

代码:

An exception occurred.
Traceback (most recent call last):
  File "resource://jid0-ib8arkgejpxo7qidkuieut5rquk-at-jetpack/flvs-educator-release-version/data/redesign.js", line 49, in 
    $("table > tbody > tr > td[width='600']").wrapInner("<div id='content_cont' />");
  File "resource://jid0-ib8arkgejpxo7qidkuieut5rquk-at-jetpack/flvs-educator-release-version/data/jquery.js", line 2, in .wrapInner
    (function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s)...<tons of meaningless code>...&define("jquery",[],function(){return p})})(window);
ReferenceError: Begin is not defined

我不明白它为什么这样做。语法错了吗?

4

1 回答 1

5

如果您包装的内容包含任何script元素,则将wrapInner再次执行它们,即使它们在页面首次加载时运行。有关更多信息,请参阅jQuery 的错误跟踪器上的Ticket #9134 。

看起来script您要包装的内容中的一个元素存在错误,并且该错误阻止您的代码在调用之后继续执行wrapInner。可能会发生错误,因为代码假定它只会运行一次。最简单的解决方案可能是script在包装之前从内容中删除任何元素:

$("table > tbody > tr > td[width='600']").find('script')
  .remove()
.end().wrapInner("<div id='content_cont' />");
于 2012-10-01T18:32:59.500 回答