Можно ли разбить пользовательские сценарии Greasemonkey на несколько файлов? - PullRequest
10 голосов
/ 02 января 2012

Я создаю пользовательский скрипт Grasemonkey, который становится действительно большим.

Могу ли я разбить его на несколько небольших файлов? Если да, то как?

Ответы [ 2 ]

15 голосов
/ 08 мая 2012

Да, и в Greasemonkey это довольно просто.Если вы хотите разделить ваши сценарии на i18n.js, utils.js и ваше основное тело сценария (и они были в том же порядке в исходном сценарии), просто измените заголовок сценария так, чтобы он выглядел примерно так:

i18n.js :

var hello = 'bonjour!';

utils.js :

function say(msg) { alert(msg); }

my.user.js :

// ==UserScript==
// @name           My nifty script
// @namespace      Your unique author identifier
// @require        i18n.js
// @require        utils.js
// ==/UserScript==

say(hello);

… и Greasemonkey загрузит и установит все три файла, объединит их в порядке, указанном вашим @require операторы (главный скрипт последний) и выполняйте его как обычноПоместите их в тот же каталог на сервере, с которого вы их распространяете, или обязательно укажите полные URL-адреса в операторах @require, где они находятся в сети.

0 голосов
/ 02 января 2012

Конечно можно. Например, если вы используете Greasemonkey в качестве аддона Mozilla, то в config.xml вы можете использовать <Require>:

<UserScriptConfig>
    <Script filename="babelfish.yahoo.com.js" name="Babel Fish" namespace="html"  basedir=".">
        <Include>http://babelfish.yahoo.com/*</Include>
        <Require filename="document.js"/>
        <Require filename="cookie.js"/>
        <Resource name="babelfishCSS" filename="babelfish.yahoo.com.css" mimetype=""/>
    </Script>
...

И document.js, и cookie.js должны находиться в той же папке, что и babelfish.yahoo.com.js.

Если ваш движок использует аннотации в файле, используйте директиву @require:

// ==UserScript==
// @description This script automatically recovers the language selection.
// @include     http://babelfish.yahoo.com/*
// @require     cookie.js
// @require     document.js
// @resource    babelfishCSS babelfish.yahoo.com.css
// ==/UserScript==
...