简体   繁体   中英

“Uncaught SyntaxError: Unexpected token (” but there is no error

I'm authoring a simple userscript that will give the backspace button navigation control like in windows (specifically this is for linux users) for Chromium browser.

This script was working, then I made a few alterations to it (very simple stuff, commenting, tabbing, making it pretty), and now i'm getting this error:

Uncaught SyntaxError: Unexpected token (

on this line

document.head.appendChild(script);

The script is located here - i'm pulling out my hair trying to figure this out.

The script really only applies to chromium as ff gives you a configuration option to enable this functionality.. - Chromium 15.0.874.106 (Developer Build 107270) Ubuntu 11.10

Edit if someone can tell me why this doesn't work that would be great

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

I believe the actual error is here:

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

fn.toString is already going to format your function like this:

function () { /* code here */ }

So you're going to end up with this:

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

This is clearly not what you want. You want to execute the inner function.

because you are just dropping in an anonymous function and not executing it

change line 46 and add ()

I had the same problem, even with simple function. This might be due to incorrect syntax of the function definition itself, especially switching between java to javascript.

if i declare function with in an object definition such as calculateTax(){//some logic;} and run, i get "SyntaxError: Unexpected token (" - this is due to the fact that function declaration is not correct format/syntax. The error is misleading, however by changing it to calculateTax : function(){//some logic;} resolves the issue. Hope this helps. Thanks.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM