Dem*_*gos 15 javascript google-chrome userscripts google-chrome-extension
自Google Chrome版本35开始,Google PlayStore外部安装的任何扩展程序的执行都会被阻止,无法通过扩展程序菜单启用.
两年前删除了非商店脚本的自动安装,但下载脚本并在扩展菜单上执行拖放操作仍允许安装,因此仍可以为Google的Chrome创建和共享脚本.但现在一切都被锁定了.
我知道这个限制不适用于dev和canary释放频道,但脚本的目的是让有足够知识的用户知道他们做了什么,而不强迫他们更改浏览器.本机支持支持在Chrome上相当有用(即使现在完全锁定),因此没有第三方插件(即:Tampermonkey)的解决方案更好.
谢谢
use*_*118 13
除了安装像Tampermonkey这样的扩展程序或获得不同的浏览器之外,似乎还剩下唯一的方法就是启动带有--enable-easy-off-store-extension-install标记的Chrome浏览器.
编辑:不幸的是,谷歌在4月从Chromium中删除了这个标志.
但是,如果用户(或任何程序)启动Chrome而没有此标志,则脚本将自动禁用.即使使用正确的标志,也无法重新启用它们; 您唯一的选择是卸载它们,然后在简单的场外扩展安装模式下重新安装.
所以,你的选择是:
--enable-easy-off-store-extension-install每次都会使用标记启动Chrome.如果您已将Chrome固定到Windows 7中的任务栏,则此处描述了更改此快捷方式的命令行参数的方法.
如果您已将Chrome设置为HTTP和HTTPS协议的默认协议处理程序(如果您将Chrome设置为默认浏览器就是这种情况),则可以修改注册表,以便每次程序尝试打开HTTP时都设置此标记或使用默认程序的HTTPS URL.
还要确保您将此参数设置为文件扩展名的Chrome配置为打开,如.xht,.htm和.xhtml.您可以使用以下.reg文件执行此操作:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\ChromeHTML\shell\open\command]
@="\"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\" --allow-easy-off-store-extension-install -- \"%1\""
Run Code Online (Sandbox Code Playgroud)
安装时,请确保Chrome的路径正确无误.
我意识到这可能不是你想听到的,但是由于谷歌继续限制诚实的开发者,因为有一些不好的玩家没有更好的选择.
编辑:我发现还有一种方法,即使用正确的权限劫持已安装的扩展:
%localappdata%\Google\Chrome\User Data\Default\Extensions.manifest.json,找到注入脚本的名称和位置.使用您的用户脚本覆盖此文件的内容.(在选择扩展名的情况下,这是asset/stickies.js.manifest.json.将任何未使用的引用脚本和HTML页面替换为emtpy文件.asset/stickies.css并background.html用空文件替换后两者.Dem*_*gos 13
编辑:我验证了这个解决方案,因为它特别有助于我解决这个问题.更丰富的答案是user2428118提交的变通方法列表.即使他们没有解决我的具体问题,也应该考虑他们.
我终于可以通过yoz发布的链接找到我的问题的答案,事实是你仍然可以启用与PlayStore无关的脚本,没有任何第三方插件,但正如你将看到的那样:它可能最好使用TamperMonkey(即使它可能意味着很少适应,它更容易200%).
解决方案是在开发人员模式下导入解压缩的用户脚本.
myscript.user.js通常创建用户脚本
将其包含在目录中并创建一个名为的文件manifest.json.你会得到这个结构(可以压缩分发):
的MyScript /
- 的manifest.json
- myscript.user.js
这manifest.json是在开发人员中将脚本导入为Chrome扩展程序所需的文件.它描述了您的用户脚本.这是相关文档,但我们目的的最小代码是:
Run Code Online (Sandbox Code Playgroud){ "manifest_version":2, "version":"1.0", "name": "MyScript", "content_scripts": [ { "js": ["myscript.user.js"], "matches": ["http://domain.com/"] } ] }
现在您的目录中包含用户脚本和manifest.json,您可以将其作为解压缩的扩展名导入(Chrome重启后将禁用打包的扩展名).要实现此目的,只需选中"开发人员模式"并选择"加载解压扩展...".导航到在步骤2中创建的目录并选择它:即"全部".

我喜欢用户脚本在Chrome上具有本机支持的方式:每个第三方插件都有一些小的变化(即:数据或xhr处理).但缺点是很多,也很重要(特别是最后两个)... 即使以本机方式启用非PlayStore脚本也是如此,我建议将脚本改为适用于插件等作为TamperMonkey.毕竟,Chrome是一个例外,因为每个其他浏览器都需要一个插件,现在这些插件是唯一的方法.
我仍然感到有点失望,所以如果有人碰巧找到了更好的解决方案(仍然希望有一些白名单),我会很乐意提供一些赏金.
编辑:请注意user2428118提供了其他有趣的解决方法列表.即使他们没有解决我的特定问题,也应该考虑他们.
编辑:清单固定
为确保您始终使用--enable-easy-off-store-extension-install标记启动Chrome ,可以使用(除了编辑菜单启动等所有快捷方式之外)此注册表文件:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\http\shell\open\command]
@="\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\" --enable-easy-off-store-extension-install -- \"%1\""
[HKEY_CLASSES_ROOT\https\shell\open\command]
@="\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\" --enable-easy-off-store-extension-install -- \"%1\""
Run Code Online (Sandbox Code Playgroud)
替换C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe为系统中的实际路径chrome.exe.