Skip to content


Subversion checkout URL

You can clone with
Download ZIP

FAQ: Reasons why a user script may not work on Scriptish

supahgreg edited this page · 7 revisions

Most user scripts that work on Greasemonkey or Google Chrome will work on Scriptish. There are a few rare exceptions, however, which are listed below.

Known reasons why a user script may not work on Scriptish

No @match or @include defined

When no @match or @include is defined for a user script Greasemonkey defaults to running the script on every page (ie: @include *). Scriptish's default is to not run the script on any page.

For a short-term fix you can install a script without a @match or @include specified, and then manually edit the script's metadata block. For a long-term fix you should politely bug the author to enhance their metadata.

@require had a return statement not in a function

Google Chrome does not support @require, so scripts that work on it are not an issue.

Greasemonkey supports @require by combining all @require code and user script code into an anonymous, self-executing function (i.e. (function(){/*..your code here..*/})()). This means that any script included by @require can have a return statement not in a function without causing an error. The downside of Greasemonkey's code wrapping is that when an error occurs after the code is evaluated (meaning an error occurring in an event handler, a setTimeout, etc.) then the error displayed in the error console will not have the correct line number or file name of where the error occurred.

Scriptish corrects the error handling issue, but at the expense of allowing @require code to have return statements not in a function (which is a bad idea anyway).

The only way to install a script with this problem is to change the script's source. You can do so manually for the short-term, but share your progress for a long-term solution.

Note: Scriptish will still work if the user script's source has a return statement not in a function, but it is still not a good practice.

@require code overwrites a global

If a @require script attempts overwrite a global like window.scrollTo, by doing the following:

scrollTo = function() {
  // ...

Scriptish will have the same problem seen with return statements outside of a function, as described above.

Note: Scriptish will still work if the user script's source attempts to overwrite scrollTo like in the example above, but that is also not a good practice.

What to do if the reason is not listed above?

If the reasons above do not appear to explain why a user script you've found or written does not work on Scriptish, then please open a issue in the issue tracker.

Something went wrong with that request. Please try again.