“未捕获的SyntaxError:意外的令牌(”但没有错误

时间:2011-12-13 00:01:27

标签: javascript chromium userscripts

我正在创作一个简单的用户脚本,它将为Chromium浏览器提供类似于Windows(特别是针对Linux用户)的退格按钮导航控件。

这个脚本 正在工作,然后我做了一些改动(非常简单的东西,评论,标签,使它漂亮),现在我收到这个错误:

  

Uncaught SyntaxError:意外的令牌(

在这一行

document.head.appendChild(script);

脚本位于here - 我正在拔出我的头发试图解决这个问题。

该脚本实际上仅适用于chrome,因为ff为您提供了启用此功能的配置选项。   - Chromium 15.0.874.106(Developer Build 107270)Ubuntu 11.10

编辑 如果有人可以告诉我为什么这样做不会很好

EmbedCodeOnPage("(function() {" + fn.toString() + "})();"); // fails
EmbedCodeOnPage("(" + fn.toString() + ")()"); // works.

3 个答案:

答案 0 :(得分:2)

我相信实际错误在这里:

function EmbedFunctionOnPageAndExecute(fn) {
    EmbedCodeOnPage("(function() {" + fn.toString() + "})();");
}

fn.toString已经按照以下方式格式化您的函数:

function () { /* code here */ }

所以你最终会得到这个:

(function() { function () { /* code here */ } })();

这显然不是你想要的。你想执行内部函数。

答案 1 :(得分:1)

因为你只是放入一个匿名函数而不是执行它

更改第46行并添加()

答案 2 :(得分:0)

即使功能简单,我也遇到了同样的问题。这可能是由于函数定义本身的语法不正确,尤其是在java到javascript之间切换。

如果我在一个对象定义中声明函数,例如calculateTax(){// some logic;}并运行,我得到“SyntaxError:Unexpected token(” - 这是因为函数声明格式不正确/ syntax。该错误具有误导性,但是通过将其更改为calculateTax:function(){//某些逻辑;}可以解决问题。希望这会有所帮助。谢谢。