Pro*_*ogo 100 javascript google-chrome web-worker
我正在开发一个使用Web worker的项目.
在我的脑子部分,我有这个代码:
var worker = new Worker("worker.js");
// More code
Run Code Online (Sandbox Code Playgroud)
这在Safari中运行良好,但Chrome报告以下错误:
Uncaught SecurityError: Failed to create a worker: script at '(path)/worker.js' cannot be accessed from origin 'null'.
为什么这在Safari中完美运行而不是Chrome?我该如何解决?
谢谢.
Nob*_*ken 73
从本地文件运行脚本时,Chrome不允许您加载Web工作程序.
Tom*_*ica 48
我使用了一种解决方法.Chrome阻止Worker但不阻止<script>.因此,制定通用解决方案的最佳方法是:
function worker_function() {
// all code here
}
// This is in case of normal worker start
// "window" is not defined in web worker
// so if you load this file directly using `new Worker`
// the worker code will still execute properly
if(window!=self)
worker_function();
Run Code Online (Sandbox Code Playgroud)
然后你正常链接它<script src="...".一旦定义了函数,就可以使用这种代码的憎恶:
new Worker(URL.createObjectURL(new Blob(["("+worker_function.toString()+")()"], {type: 'text/javascript'})));
Run Code Online (Sandbox Code Playgroud)
Rob*_*cus 35
这个问题已由Noble Chicken正确解释,但我有一个更通用的解决方案.使用python而不是安装wamp或xamp,您可以导航到项目所在的文件夹并键入:python -m http.server
就是这样,你将在该文件夹上有一个正在运行的服务器,可以从localhost访问.
Mic*_*aël 28
启动Chrome时,您还可以使用--allow-file-access-from-files标志.
MacOsX示例:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --allow-file-access-from-files
Run Code Online (Sandbox Code Playgroud)
更多信息:Chrome的Web worker设置
Saf*_*ain 10
这是因为安全限制.您需要使用http://或https://协议而不是file:///.
如果安装了NodeJS,则只需执行以下操作即可. - 请注意,这是许多可用选项之一
Run Code Online (Sandbox Code Playgroud)$ npm install -g local-web-server
现在,您可以在要访问内容的任何文件夹中使用它http.
$ ws
Run Code Online (Sandbox Code Playgroud)
导航到http://localhost:8000(默认端口:8000)
这是受到上面托马斯回答的启发。但有一点需要注意的是,我只想分发 HTML,所以我手动将 js 转换为 dataURL。并启用其中的数据 URL 复选框。
const myWorker = new Worker("data:application/x-javascript;base64,b25tZXNzYW...");Run Code Online (Sandbox Code Playgroud)
在 Chrome 中创建本地 http 服务器的简单方法是这个应用程序:
Chrome 网络服务器
https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb/相关
描述:
Chrome 的 Web 服务器使用 HTTP 从网络上的本地文件夹提供网页。离线运行。Web Server for Chrome 是 Chrome 的开源 (MIT) HTTP 服务器。
它可以在安装了 Chrome 的任何地方运行,因此您可以将其带到任何地方。它甚至可以在 ARM chromebook 上运行。
它现在可以选择侦听本地网络,以便其他计算机可以访问您的文件。此外,它还可以尝试获取互联网地址。
许多人使用它在 chromebook 上进行基本的 Web 开发。它还可以方便地在计算机之间甚至互联网上通过本地网络共享文件。
安装后,导航至http://127.0.0.1:8887
它并不像标志--allow-file-access-from-files那样不安全
| 归档时间: |
|
| 查看次数: |
64494 次 |
| 最近记录: |