Обновить скрипт greasemonkey в chrome без переустановки? - PullRequest
11 голосов
/ 07 октября 2010

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

Есть идеи?

Ответы [ 4 ]

13 голосов
/ 11 марта 2011

Да, есть способ сделать это.Используя метод, принятый из этого блестящего ответа (^ _ ^), вы можете редактировать сценарии - на месте - и просто нажать ссылку "Перезагрузить", чтобы изменения вступили в силу.

Этот метод имеет дополнительный бонус: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * 'C *' '*' '* *'*

Ниже описано, как настроить рабочую среду для простого обновления сценариев:

  1. Создайте удобный вам каталог, а не там, гдеChrome обычно ищет расширения 1 .Например, Create: C:\MyChromeScripts\.
    Это место, где все ваши скрипты будут находиться в будущем.

  2. Для каждого скрипта создайте свой собственный подкаталог.Например, Script_1, Script_2 и т. Д.

  3. Каждый подкаталог должен содержать свой сценарий EG MyScript1.user.js и любые файлы, используемые этим сценарием.

  4. Теперь для секретного соуса ... Вы также должны создать файл манифеста в этом подкаталоге, и он должен иметь имя: 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"
    }
    


  5. Теперь в диспетчере расширений Chrome (URL = chrome: // extensions / ), разверните Режим разработчика .

  6. Нажмите кнопку Загрузить распакованное расширение ... .

  7. Для папки вставьте в папку для вашего скрипта, например:
    C:\MyChromeScripts\Script_1.

  8. Ваш скриптбудет установлен и готов к работе.

  9. Оставьте страницу Extensions открытой.Теперь, когда вы сохраняете любые изменения в своем файле * .js, нажмите на ссылку Обновить , чтобы они вступили в силу немедленно.

  10. Наслаждайтесь!



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=.

3 голосов
/ 03 января 2011

Вы можете сделать это, если у вас есть сервер, куда вы можете импортировать ваш измененный файл.

Как это

// 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, а затем мой пользовательский скрипт, когда я запускаювеб-страница всегда перезагружает весь скрипт.

Может быть, это вам тоже поможет.

0 голосов
/ 09 мая 2012

Простой способ сделать это - использовать два файла:

  • A userscript.user.js с заголовками GM, загружающими script.js. Вы можете заставить его очищать кэш каждый день (указать загрузку script.js с добавленной случайной строкой запроса)
  • script.js, который содержит фактический скрипт.

Например, я сделал это здесь

//#!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.js?purge=xyz, где xyz зависит от даты. Строка запроса на очистку гарантирует, что скрипт кэшируется только на один день и не более - к следующему дню он будет загружен заново. Для разработки лучше использовать "script.js?purge="+Math.random(). Если скрипт находится на вашей локальной машине, вам не нужно беспокоиться о кеше для себя.

Теперь, если вы внесете изменение в script.js, к завтрашнему дню все будут использовать обновленную версию.

0 голосов
/ 10 ноября 2010

Если вы не хотите переустанавливать скрипт, вы можете перезапустить Chrome.
Это должно сделать ваши изменения вступили в силу.

Я согласен, это очень раздражает

...