为什么JavaScript wrapInner会抛出错误?

问题描述 投票:0回答:1

我有一个带有以下代码的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

我无法弄清楚为什么这样做。语法错了吗?

javascript jquery firefox-addon runtime-error
1个回答
5
投票

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

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

$("table > tbody > tr > td[width='600']").find('script')
  .remove()
.end().wrapInner("<div id='content_cont' />");
© www.soinside.com 2019 - 2024. All rights reserved.