创建一个新的
<script>
元素没有效果,会在Chrome浏览器中显示一个Not allowed to load local resource: file://....
错误。此外,创建用户脚本也行不通——每次编辑后都需要重新安装。
是否有其他的方法可以通过书签等方式轻松加载本地脚本?
<script>
元素没有效果,会在Chrome浏览器中显示一个Not allowed to load local resource: file://....
错误。在Chrome中,你可以创建一个扩展来保存所有需要加载的本地文件。这将使你的文件可通过chrome-extension://...
而不是file://...
访问。
在一个新的文件夹中创建一个名为manifest.json
的文件,并填写以下内容:
{
"name": "File holder",
"manifest_version": 2,
"version": "1.0",
"web_accessible_resources": ["test.js", "other.js", "yetanother.js"]
}
接下来,将要加载的所有脚本放在新目录中,并确保它们包含在web_accessbile_reources
清单列表中。通过访问chrome://extensions
,启用开发者模式
并选择带有Load unpacked extension…
的新文件夹来加载扩展程序。
现在,您可以使用chrome-extension://[app_id]/[file_name]
访问扩展程序目录中的所有文件,其中“app_id
”是列在chrome://extensions
页面上的哈希值。请注意,由于协议和主机名与实际工作所在的位置不同(除非您决定在扩展文件夹中进行所有开发工作,这可能对您来说是可接受的),因此扩展程序资源是跨域的,并且只能通过<script>
标签加载。
现在从控制台,您可以执行:
var s = document.createElement("script");
s.src = "chrome-extension://aefigdoelbemgaedgkcjpcnilbgagpcn/test.js";
document.body.appendChild(s);
(假设你的文件名为test.js
,应用程序ID为aefigdoelbemgaedgkcjpcnilbgagpcn
。)
我知道这很麻烦,但也许你可以将 chrome-extension://[app_id]
这一部分存储为缩写变量?
不幸的是,Chrome 不支持通过 AJAX 加载本地文件; 但是,您可以通过使用标志 --disable-web-security
(每个主机操作系统的详细信息有所不同)来解决此限制。
如何在命令行中以以下方式运行Chrome:
chrome.exe --allow-file-access-from-files
你需要运行本地http服务器
这是一个很好的文档:
https://developer.mozilla.org/en-US/docs/Learn/Common_questions/set_up_a_local_testing_server