Создайте страницу "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
Есть несколько библиотек, которые предоставляют страницы конфигурации для пользовательских скриптов:
![Example GM_config dialog]()
![Example MonkeyConfig dialog]()
Использование варьируется в зависимости от библиотеки, но обычно вы предоставляете им необходимые разрешения, такие как 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
Удачи и наслаждайтесь