FANDOM


Nuvola apps important
This script is for PERSONAL use only!
You are free to install this script for yourself, but it is not allowed to be used wiki-wide (e.g., in MediaWiki:Common.js or MediaWiki:Wikia.js), as it would violate FANDOM's Terms of Use.
(See the customization policy)

UnsafeScripts attempts to re-activate user customizations in the JS code editor; a safety limitation which power users may find annoying.

When the edit button is clicked, the script launches the JavaScript page editor in a new tab and loads the customization there. The script also supports URL query parameters.

Only use this script for a reason, like if you want AntiUnicruft or TabKeyInserter to work fully. Note that this script loads site scripts as well as user scripts.

Installation

See also: Help:Including additional CSS and JS, Help:Advanced CSS and JS
  • For site-wide use, an administrator can add the line below to the wiki's MediaWiki:ImportJS page.
dev:UnsafeScripts/code.js
  • For personal use, add the code snippet below to your global.js page (for use on all wikis) or your common.js page on your wiki (for use on a single wiki). Note that personal JS must be enabled for your account.
importArticles({
    type: 'script',
    articles: [
        'u:dev:MediaWiki:UnsafeScripts/code.js',
    ]
});
importArticles — Best Practices for installing JavaScript on FANDOM

The importArticles statement is designed to combine multiple HTTP requests into a single data transfer, allowing multiple scripts to load and execute faster. If you've been installing several different scripts, your JavaScript file has probably accumulated unnecessary import statements. Click "Expand" to learn how to efficiently batch import scripts to speed up performance and make your code look cleaner. One other approach is by using the MediaWiki:ImportJS.

If your JavaScript file has several lines of code that say importScript, importScriptPage, or importArticles, you may be able to combine them! By batch importing a collection of scripts with a single import, your JavaScript code will load faster and look cleaner. Consider the example below. On the left is an example of what your JavaScript file might currently look like. On the right is how you could improve that code.

Multiple imports — messy and slow One import — clean and efficient
importScriptPage('AjaxRC/code.js','dev');
 
importScript('MediaWiki:localScript.js');
 
importArticle({
  type: 'script',
  article: 'u:dev:FloatingToc/code.js'
});
 
importScriptPage('page1.js', 'wikiname');
 
importScriptPage('page2.js', 'wikiname');
importArticles({
  type: 'script',
  articles: [
    'u:dev:AjaxRC/code.js',
    'MediaWiki:localScript.js',
    'u:dev:FloatingToc/code.js',
    'u:wikiname:page1.js',
    'u:wikiname:page2.js'
  ]
});

Note: In this example, pay close attention to the placement of commas and other punctuation. For people who aren't familiar with programming (and even those who are!), a common mistake when writing code is to accidentally delete, forget, or misplace critical symbols like commas or quotation marks. This can cause a syntax error that breaks the code. Carefully follow the convention shown here when using importArticles.

But there's much more to importArticles than just this! For more examples and advanced usage, see the help page at Help:Including additional JavaScript and CSS.

Configuration

User configuration

You can configure the script by placing the window.unsafeScriptsConfig object above your import. Here's the default configuration:

window.unsafeScriptsConfig = {
    'debug': false,
    'usesitejs': true,
    'useuserjs': true,
    'usesitecss': true,
    'useusercss': true,
    'dropdown': false
};

Options

Here's a list of options:

Option Description Default
debug

Minification and caching bypass feature.
Accepts true and false.

false
usesitejs

Conditional for loading the site scripts module.
Accepts true and false.

true
useuserjs

Conditional for loading the user scripts module.
Accepts true and false.

true
usesitecss

Conditional for loading the site styles module.
Accepts true and false.

true
useusercss

Conditional for loading the site scripts module.
Accepts true and false.

true

URL query parameters

With these, you can override the options set in the default/user configuration. On the script page, add a query string in your address bar like so:

http://dev.wikia.com/wiki/MediaWiki:UnsafeScripts/code.js?dropdown=0&debug=1

This URL moves the button to the dropdown and enables debug mode.

Preventing site customizations from loading

The usesitejsand usesitecss options can be set to false, in order to disable site customisations.

If you need to bypass customizations while removing malicious code, use the following:

http://dev.wikia.com/wiki/MediaWiki:UnsafeScripts/code.js?dropdown=1&usesitejs=0&useuserjs=0

This URL disables site JS, site CSS and moves the button to the dropdown.

Notes

  • This script was created in 2013, after FANDOM introduced a safety feature that blocks user and site scripts while editing Javascript pages.
  • It is possible for custom JS to break the editor with this script, unless bypassed.