当本地运行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点击,所以很多人使用它们和博客。 如果你的需求是暂时的,那么这个目前效果很好。*