Подтвердить что ты не робот

Обновить greasemonkey script в хроме без переустановки?

Я просто хочу сохранить, обновить страницу, и мои изменения появятся, как в Firefox. Необходимо перетащить его и установить его каждый раз, когда вас раздражает.

Любые идеи?

4b9b3361

Ответ 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, завтра все будут использовать обновленную версию.