(这个问题与JS-XSL演示here)
有关简要介绍一下这个演示的用途;它将MS Excel文件作为输入,解析数据,并以纯文本格式输出数据。我下载了包(zip)并在本地运行,只需打开Chrome浏览器的html文件即可。
问题是,我似乎无法克服以下错误:
Uncaught SecurityError: Failed to construct 'Worker': Script at 'file:///C:/Users/David/Desktop/Xlsx%20Demo/xlsworker.js' cannot be accessed from origin 'null'.
以上错误指向html文件的第34行,其中包含以下代码:
/* I changed the file path from './xlsworker.js' to 'xlsworker.js' */
var worker = new Worker('xlsworker.js');
此演示只有三个文件:html文件本身和两个javascript文件,一个名为xls.js
,另一个名为xlsworker.js
。所有三个文件都在同一目录中并处于同一级别。
令我感到困惑的是,几个月前我成功地运行了同样的演示!我无法想象我现在做的是什么。有什么见解吗?
答案 0 :(得分:2)
https://code.google.com/p/chromium/issues/detail?id=278883#c9
Chromium基本上阻止你在file://协议上使用worker,你必须托管你的文件并通过http://协议访问它们。
你需要一台服务器(甚至像http://docs.python.org/2/library/simplehttpserver.html这样简单的东西)
答案 1 :(得分:0)
IMO,以下是一个优秀的答案,因为它不需要运行Web服务器。它非常快速和简单。
(downvote在下面的注释5中解释)
我已经测试并验证了此解决方案适用于提问者链接的演示,当在问题者所描述的本地运行时。在Windows 10上测试,Chrome Stable x64 48.0.2564.103 m。
不允许脚本访问Chrome中的本地文件系统。如果您想在本地测试网络工作者,则必须使用特殊标记打开Chrome。
在Windows上,使用标志
启动chromechrome.exe --allow-file-access-from-files
之后Chrome将启动,您可以在此会话期间测试工作人员。
注意1:如果您在运行此命令时Chrome已在运行,则新的Chrome实例将不允许工作人员运行 - 您必须先退出Chrome(如有必要,请使用Windows任务管理器)确保Chrome未运行)。
注意2:此答案的来源(链接如下)在Windows上包含--args标志,但我没有在Windows上找到“args”。事实上,我无法在任何地方找到任何“args”标志的文档 - 不确定它的作用。所以我不把它包含在上面的Windows命令中。*
注意3:对于那些尝试在Chrome-Mac或Windows-Firefox上执行类似操作的用户,以下链接包括上述链接以及上面的Windows-Chrome解决方案。但我上面描述的解决方案只是Windows-Chrome方法。
http://js-workout.tompascall.com/web-workers-and-responsiveness/
注意4:请注意,此解决方案与运行Web服务器不同,但为了您的目的,它应该是一个完全适用的解决方案。此外,请注意,使用此启动Chrome启动开关浏览网页可能会损害您的本地文件安全性,因此建议仅将此方法用于本地文件目的,并禁用它以进行网络浏览。*
注5:谷歌声称使用启动标志“只应用于临时案件,并可能在将来中断。” Chrome启动开关的Web搜索返回大约2,000次点击,因此很多人使用它们并在博客上发布它们。如果您的需求是暂时的,那么目前效果很好。*