除非清除缓存,否则Web工作者不会在IE中启动

时间:2014-03-17 13:32:38

标签: javascript html5 internet-explorer sharepoint web-worker

我的HTML5脚本中有一个非常奇怪的错误。我在OData中完全编写了一个sharepoint应用程序,它使用一些HTML 5 webworker在后台进行数字运算。这适用于所有主流浏览器(FF,IE10 + Chrome,...)。但是,当我执行刷新或再次浏览页面时。该脚本仍然可以在FF和Chrome上运行,但在IE上挂起。

在我的网络视图中,我看到了一个对Worker.js文件的请求,但是有一个304 NOT MODIFIED响应。然后IE就挂在那个状态为(Pending)的请求上。只有在我清除浏览器缓存后才能解决此问题。

我使用self.close()正确关闭了所有线程。

知道问题是什么吗?我不确定它是代码问题,浏览器问题还是服务器端问题,但我可以在线上以及本地服务器上复制Sharepoint上的错误。整个项目只是JS,所以我不能修改标题作为解决方法。

更新:我在sharepoint环境之外运行完全相同的代码,并且它运行良好。问题是与Sharepoint有关。

2 个答案:

答案 0 :(得分:1)

SharePoint发送标题:

Content-Disposition: attachment; filename="xyz.js"
X-Download-Options:  noopen

然后IE Web Worker Implantation不运行此Web工作者。 (在IE11中测试)在IE网络监视器中,请求仍处于暂挂状态,甚至响应文本也可见。

我知道两个变通办法:

  1. 将web worker js放在layouts文件夹中(需要一个Farm Solution,其缺点是)
  2. 将Web应用程序的浏览器文件处理设置为Permissive(可能您的安全性没有被逗乐)

答案 1 :(得分:0)

使用基于时间的查询字符串参数可防止缓存在每次刷新时显示http状态200。测试最新的铬,即ff;

var opus = new Worker("worker.js?q=" + new Date().getTime().toString() );
说实话,这是一个很长的镜头,因为我现在没有分享点