12

出于开发目的,我希望能够轻松地将本地存储的脚本加载到浏览器中,而不必复制粘贴到控制台。

创建新<script>元素不起作用,它会给出Not allowed to load local resource: file://....错误(在 Chrome 中)。

此外,创建用户脚本也行不通——我每次进行编辑时都必须重新安装它。

有没有另一种方法可以通过小书签/等轻松加载本地脚本?

4

5 回答 5

26

在 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、启用Developer Mode和选择新文件夹来加载扩展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]部分存储为速记变量?

于 2012-05-16T05:04:05.297 回答
2

遗憾的是,Chrome 不允许您通过 AJAX 加载本地文件;但是,您可以通过启动带有标志的浏览器来解决此限制--disable-web-security(详细信息因主机操作系统而异)。

于 2012-05-16T05:09:12.603 回答
1

运行 chrome 为: chrome.exe --allow-file-access-from-files 从 CLI

于 2021-07-03T07:39:39.837 回答
0

你需要运行本地http服务器

这是一个很好的文档:

https://developer.mozilla.org/en-US/docs/Learn/Common_questions/set_up_a_local_testing_server

于 2020-03-23T13:52:46.870 回答
-1

您是否尝试过从页面到 js 文件的相对路径,所以...

src='/js/javascript.js'

于 2012-05-16T05:03:58.457 回答