2

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.
rlemon
  • 17,094
  • 12
  • 88
  • 122

3 Answers3

2

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.

Wayne
  • 58,261
  • 15
  • 130
  • 125
  • 1
    +1 for a better explanation in the answer. Thomas however had the same conclusion in the chat room :) thanks. – rlemon Dec 13 '11 at 00:14
1

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

change line 46 and add ()

Thomas Blobaum
  • 3,460
  • 1
  • 16
  • 16
0

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.

Jhenry
  • 141
  • 2
  • 3