【问题标题】:Is PhantomJS able to work with WebWorkers?PhantomJS 可以与 WebWorkers 一起工作吗?
【发布时间】:2015-05-21 16:34:16
【问题描述】:

每当我尝试通过 PhantomJS 测试 Web Worker 时,它都会给我一个错误:

SECURITY_ERR: DOM Exception 18: 试图突破 用户代理的安全策略。

这是否意味着 PhantomJS 无法与 WebWorkers 一起工作,或者我需要设置一些配置才能使其工作?

例如我需要测试一个与 WebWorker 交互的脚本(在我的例子中是 worker.js 文件):

var worker = new Worker('doWork.js');
worker.addEventListener('message', function(e) {
  console.log('Worker said: ', e.data);
}, false);
worker.postMessage('Hello World');
phantom.exit();

这是 Worker 的代码(dowork.js):

self.addEventListener('message', function(e) {
  self.postMessage(e.data);
}, false);
phantom.exit();

当我尝试运行它时,我得到了:

pavel@lenovo:~/phantom_test$ phantomjs worker.js 
SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent.

  worker.js:1

【问题讨论】:

  • 您是否尝试使用--web-security=false 命令行选项运行它?
  • 它不起作用,同样的错误。

标签: javascript phantomjs web-worker


【解决方案1】:

您的脚本不适用于当前版本的 PhantomJS 2。 我假设您使用的是 PhantomJS 2(但这也适用于 PhantomJS 1)。

当主执行上下文不尊重 web-security 选项时,我们遇到了问题。最近推出了针对它的修复程序(请参阅https://github.com/ariya/phantomjs/commit/d938eddaf2039cc4d8a90704f736129edb8e1260

因此,您必须等待 2.0.1 发布或从源代码构建 PhantomJS 2。

【讨论】:

    猜你喜欢
    • 2013-03-22
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多