问题 更新chrome中的greasemonkey脚本而不重新安装?


我只是希望能够保存,刷新页面,并让我的更改像我在Firefox中一样显示。每次拖动它并安装它都会让人讨厌。

有任何想法吗?


1489
2017-10-07 18:44


起源



答案:


是的,有办法做到这一点。使用从中采用的方法 这个精彩的回答 (^ _ ^),您可以编辑脚本 - 只需点击“重新加载”链接即可使更改生效。

这种方法还有Chrome的额外奖励 扩展文件夹1 没有难以理解的文件夹和文件名,你可以很容易地找到你想要调整的脚本。

以下是如何设置工作环境以允许轻松更新脚本:

  1. 创建一个方便的目录,和 而不是Chrome通常寻找扩展程序的位置1。例如,创建: C:\MyChromeScripts\
    这将是您将来所有脚本所在的位置。

  2. 为每个脚本创建自己的子目录。例如, Script_1Script_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 = 铬://扩展/),展开 开发者模式

  6. 点击 加载解压扩展... 按钮。

  7. 对于文件夹,粘贴在  对于您的脚本,例如:
    C:\MyChromeScripts\Script_1

  8. 您的脚本将被安装并运行。

  9. 保持 扩展 页面打开。现在,当您保存对* .js文件的任何更改时,请点按 刷新 链接让他们立即生效。

  10. 请享用!


 


1 extensions文件夹默认为:

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= 选项。


13
2018-03-11 04:16



这很棒,有没有办法观看目录呢?我仍然需要导航回扩展页面。 - Bartlomiej Lewandowski
@BartlomiejLewandowski,并不是我所知道的,但是由于他们对原生用户脚本进行了抨击,因此没有跟上Chrome的变化。 - Brock Adams


答案:


是的,有办法做到这一点。使用从中采用的方法 这个精彩的回答 (^ _ ^),您可以编辑脚本 - 只需点击“重新加载”链接即可使更改生效。

这种方法还有Chrome的额外奖励 扩展文件夹1 没有难以理解的文件夹和文件名,你可以很容易地找到你想要调整的脚本。

以下是如何设置工作环境以允许轻松更新脚本:

  1. 创建一个方便的目录,和 而不是Chrome通常寻找扩展程序的位置1。例如,创建: C:\MyChromeScripts\
    这将是您将来所有脚本所在的位置。

  2. 为每个脚本创建自己的子目录。例如, Script_1Script_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 = 铬://扩展/),展开 开发者模式

  6. 点击 加载解压扩展... 按钮。

  7. 对于文件夹,粘贴在  对于您的脚本,例如:
    C:\MyChromeScripts\Script_1

  8. 您的脚本将被安装并运行。

  9. 保持 扩展 页面打开。现在,当您保存对* .js文件的任何更改时,请点按 刷新 链接让他们立即生效。

  10. 请享用!


 


1 extensions文件夹默认为:

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= 选项。


13
2018-03-11 04:16



这很棒,有没有办法观看目录呢?我仍然需要导航回扩展页面。 - Bartlomiej Lewandowski
@BartlomiejLewandowski,并不是我所知道的,但是由于他们对原生用户脚本进行了抨击,因此没有跟上Chrome的变化。 - Brock Adams


如果您有可以导入已更改文件的某个服务器,则可以执行此操作。

喜欢这个

// 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然后我的自定义脚本,当我运行网页时,它总是重新加载整个脚本。

也许这对你有帮助。


3
2018-01-02 23:36



辉煌!为什么没有更多人谈论这种方法? - Ian McIntyre Silber


如果您不想重新安装脚本,可以重新启动chrome。
这应该使您的更改生效。

我同意这很烦人


0
2017-11-10 19:27





一种简单的方法是使用两个文件:

  • 一个 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
2018-05-09 09:43