Создайте страницу "config" или "options" для Greasemonkey script

Я написал простой Greasemonkey script, и я пытаюсь создать страницу "config" для этого script (например, тот, который используется для расширений Google Chrome). Будет ли какой-либо способ создать страницу конфигурации для пользовательского текста, например, страницы параметров для расширений Google Chrome? Невозможно включить страницу .html как часть Greasemonkey script (насколько я знаю), поэтому я ищу другие варианты.

// ==UserScript==
// @name       Redirector
// @namespace  http://use.i.E.your.homepage/
// @version    0.1
// @description  enter something useful
// @match      http://*/*
// @copyright  2012+, You
// @run-at document-start
// ==/UserScript==

redirectToPage("http://www.youtube.com/", "http://www.google.com");

function redirectToPage(page1, page2){
if(window.location.href.indexOf(page1) != -1){
    window.location.href = page2;
}
}

Ответ 1

Если вы используете его для хрома, то это не Greasemonkey, а Tampermonkey.

Вы можете использовать GM_getResourceText, вставить свой html на pastebin.com(или аналогичный) и добавить ссылку как один из @resource в блок метаданных. По крайней мере, я знаю, что это работает с Greasemonkey.

Например:

// @resource configHtml http://pastebin.com/raw.php?i=2RjKfwJQ

// ... some DOM node that you will append to the current page
node.innerHTML = GM_getResourceText("configHtml");

Ответ 2

Есть несколько библиотек, которые предоставляют страницы конфигурации для пользовательских скриптов:

1) GM_config

Example GM_config dialog

2) MonkeyConfig

Example MonkeyConfig dialog

3) Модуль JS подменю GM_registerMenuCommand


Использование варьируется в зависимости от библиотеки, но обычно вы предоставляете им необходимые разрешения, такие как GM_getValue и GM_setValue, и запрашиваете библиотеку с помощью директивы @require например:

// ==UserScript==
// @name          My Userscript
// @description   An example userscript with a config page
// @version       0.0.1
// @require       https://www.example.com/lib/myconfig.js
// @grant         GM_getValue
// @grant         GM_setValue
// @grant         GM_addStyle
// @grant         GM_registerMenuCommand
// ==/UserScript==

const config = new MyConfig({ ... })

Затем вы регистрируете команду меню, которая открывает страницу конфигурации/диалог, например:

GM_registerMenuCommand('Configure My Userscript!', () => {
    config.open()
})

В случае MonkeyConfig он может зарегистрировать команду для вас:

const config = new MonkeyConfig({
    title: 'Configure My Userscript!',
    menuCommand: true,
    // ...
})

Для расширенного использования конфигуратор может разрешить обратные вызовы для кнопок закрытия/отмены/сохранения, а также предоставить контроль над CSS и другими параметрами. Подробные инструкции можно найти на вики GM_config и на домашней странице MonkeyConfig.

Ответ 3

Используйте параметр на странице, которую вы уже включили, и если этот набор затем очистит весь документ:   http://page.my.script.runs.on/?configPage=true

if(getUrlParameter("configPage") === "true") {
    $(document).empty
}

Ответ 4

Это очень необходимо, но на данный момент комбинация из двух подходов должна работать.

1) Для личного использования у меня просто есть куча переменных в верхней части script. Проблема здесь в том, что если кто-то еще использует мое script, обновление заканчивается стиранием его предпочтений.

2) Создайте страницу конфигурации на своем веб-сайте. Хотя это работает чудесно, сайты удаляются все время. Нет никакой веской причины для того, чтобы script зависел от работы веб-сайта.

Если вы сделаете обе эти вещи, пользователь может редактировать настройки в script, когда веб-сайт скриптов исчезает.

Вот пример, когда нежелательная функциональность//закомментирована.

http://go-here.nl/gm/wikipedia-clean-up.php

Удачи и наслаждайтесь