Обновить greasemonkey script в хроме без переустановки?
Я просто хочу сохранить, обновить страницу, и мои изменения появятся, как в Firefox. Необходимо перетащить его и установить его каждый раз, когда вас раздражает.
Любые идеи?
Ответы
Ответ 1
Да, есть способ сделать это. Используя метод, принятый из этого блестящего ответа (^ _ ^), вы можете редактировать скрипты - на месте - и просто нажать ссылку "Обновить" для изменений в вступают в силу.
У этого метода есть дополнительный бонус, который Chrome Папка расширений 1 не становится загроможденной неразделенной папкой и имена файлов, и вы можете легко найти script, который хотите настроить.
Здесь, как настроить рабочую среду, чтобы упростить обновление script:
-
Создайте каталог, который вам удобен, а не там, где Chrome обычно ищет расширения 1. Например, Create: C:\MyChromeScripts\
.
Это будет где все ваши скрипты будут жить в будущем.
-
Для каждого script создайте свой собственный подкаталог. Например, Script_1
, Script_2
и т.д.
-
Каждый подкаталог должен содержать script, EG MyScript1.user.js
и любые файлы, используемые этим script.
-
Теперь для секретного соуса... Вы также должны создать файл манифеста в этом подкаталоге и его нужно называть: manifest.json
.
Содержимое образца, как минимум:
{
"manifest_version": 2,
"content_scripts": [ {
"exclude_globs": [ ],
"include_globs": [ "*" ],
"js": [ "MyScript1.user.js" ],
"matches": [ "https://stackoverflow.com/*",
"https://stackoverflow.com/*"
]
} ],
"description": "This script does X, Y, and Z.",
"name": "My script number 1",
"version": "1"
}
-
Теперь в диспетчере расширения Chrome (URL = chrome://extensions/) разверните режим разработчика.
-
Нажмите кнопку Загрузить распакованное расширение....
-
Для папки вставьте папку для script, например:
C:\MyChromeScripts\Script_1
.
-
Ваш script будет установлен и функционален.
-
Откройте страницу Расширения. Теперь, когда вы сохраняете какие-либо изменения в *.js файле, нажмите ссылку Обновить, чтобы они вступили в силу немедленно.
-
Наслаждайтесь!
1 Папка расширений по умолчанию:
Windows XP:
C:\Documents and Settings\***{username}***\Local Settings\Application Data\Google\Chrome\User Data\Default
Windows Vista:
C:\Users\***{username}***\AppData\Local\Google\Chrome\User Data\Default
Windows 7:
C:\Users\***{username}***\AppData\Local\Google\Chrome\User Data\Default
Хотя вы можете изменить его, запустив Chrome с параметром --user-data-dir=
.
Ответ 2
Это можно сделать, если у вас есть сервер, на котором вы можете импортировать измененный файл.
Подобно этому
// a function that loads jQuery and calls a callback function when jQuery has finished loading
function addJQuery(callback) {
var script = document.createElement("script");
script.setAttribute("src", "http://server.url/Custom/jquery.min.js");
script.addEventListener('load', function() {
var script = document.createElement("script");
script.textContent = "(" + callback.toString() + ")();";
document.body.appendChild(script);
}, false);
document.body.appendChild(script);
}
function addScript(callback) {
var script = document.createElement("script");
script.setAttribute("src", "http://server.url/Custom/Custom script.js");
script.addEventListener('load', function() {
var script = document.createElement("script");
script.textContent = "(" + callback.toString() + ")();";
document.body.appendChild(script);
}, false);
document.body.appendChild(script);
}
// load jQuery and execute the init function
addJQuery(addScript);
Загружает сначала jQuery, затем мой пользовательский script, когда я запускаю веб-страницу, он всегда перезагружает весь script.
Возможно, это тоже поможет.
Ответ 3
Если вы не хотите переустанавливать script, вы можете перезапустить хром.
Это должно вносить изменения в ваши действия.
Я согласен, что это очень раздражает
Ответ 4
Легкий способ сделать это - использовать два файла:
- A
userscript.user.js
с заголовками GM, которые загружают script.js
. Вы можете очистить кеш каждый день (скажите ему загрузить script.js
с добавленной случайной строкой запроса)
-
script.js
, который содержит фактический script.
Например, я сделал это здесь
//#!userscript.user.js
// ==UserScript==
//GM headers
// ==/UserScript==
(function(){
var d=new Date();
var script = document.createElement("script");
script.type = "text/javascript";
script.src="script.js?purge="+d.getMonth()+""+d.getDay(); //appends a new query string every day. This evades browser cache
document.body.appendChild(script); //you can append to `head` as well, I used body here sine I needed jQuery already loaded
})();
script загружает script.js?purge=xyz
, где xyz
зависит от даты. Строка запроса продувки гарантирует, что script будет кэшироваться только на день, а не на следующий день, она будет загружена заново. Для использования в целях развития лучше "script.js?purge="+Math.random()
. Если script находится на вашей локальной машине, вам не нужно беспокоиться о кеше для себя.
Теперь, если вы внесете изменения в script.js
, завтра все будут использовать обновленную версию.