当本地运行JS-XSL演示时,JavaScript:“Uncaught SecurityError”

(这个问题与这里find的JS-XSL演示有关)

简单地告诉你这个演示是为了什么; 它将MS Excel文件作为input,parsing数据,并以纯文本格式输出数据。 我下载了软件包(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'. 

而上面的错误指向第35行的html文件,它具有以下代码:

 /* I changed the file path from './xlsworker.js' to 'xlsworker.js' */ var worker = new Worker('xlsworker.js'); 

这个演示文件只有三个文件:html文件本身和两个javascript文件,一个名为xls.js ,另一个名为xlsworker.js 。 所有这三个文件都在相同的目录中,并在同一级别。

对我来说更让人费解的是,我几个月前成功地运行了这个相同的演示! 我无法想象如果我现在做了什么不同的事情。 任何见解?

https://code.google.com/p/chromium/issues/detail?id=278883#c9

您基本上被Chromium禁止在file://协议上使用worker,您必须托pipe您的文件并通过http://协议访问它们。

你需要一个服务器(甚至像http://docs.python.org/2/library/simplehttpserver.html

海事组织,下面是一个优越的答案,因为它不需要运行一个networking服务器。 这非常快速和简单。

(downvote在下面的注释5中解释)

我已经testing并validation了这个解决scheme在由提问者描述的本地运行时与提问者链接的演示工作。 testing在Windows 10,Chrome Stable x64 48.0.2564.103米。

在Chrome中不允许脚本访问您的本地文件系统。 如果您想在本地testingnetworking工作者,则必须使用特殊标志打开Chrome。

在Windows上,使用以下标志启动Chrome:

 chrome.exe --allow-file-access-from-files 

在此之后,Chrome将会启动,您可以在此会话期间testing工作人员。

注意1:如果Chrome运行此命令时Chrome已经在运行,Chrome的新实例将不允许Worker运行 – 您必须先从Chrome退出(如有必要,请使用Windows任务pipe理器确保Chrome未运行)。

注2:这个答案的来源(下面的链接)包括Windows上的–args标志,但是我还没有在Windows上find“args”。 事实上,我找不到任何“args”标志的任何文档 – 不知道它是什么。 所以我不把它包含在上面的Windows命令中。

注3:对于那些试图在Chrome-Mac或Windows-Firefox上执行类似操作的用户,以下链接同时包含上述Windows-Chrome解决scheme。 但是我上面介绍的解决scheme只是Windows-Chrome的方法。

http://js-workout.tompascall.com/web-workers-and-responsiveness/

注意4:请注意,该解决scheme与运行Web服务器不同,但为了您的目的,它应该是一个完全适合的解决scheme。 此外,请注意,使用此chrome启动开关来浏览网页可能会危及您的本地文件安全性,因此build议您仅将本方法用于本地文件目的,并禁用网页浏览。

注5:Google声明,使用启动标志“只能用于临时病例,未来可能会中断”。 networkingsearch铬启动开关返回约2000点击,所以很多人使用它们和博客。 如果你的需求是暂时的,那么这个目前效果很好。*