每当我尝试通过PhantomJS测试Web Worker时,它都会给我一个错误:
SECURITY_ERR:DOM例外18:试图突破 用户代理的安全策略。
是否意味着PhantomJS无法与WebWorkers合作,或者我需要设置一些配置才能使其正常工作?
E.g。我需要测试一个与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();
这是一个工人代码( 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
答案 0 :(得分:4)
您的脚本无法与当前版本的PhantomJS 2一起使用。 我假设您正在使用PhantomJS 2(但这也适用于PhantomJS 1)。
当主要执行上下文不尊重web-security
选项时,我们遇到了问题。最近推出了修复程序(参见https://github.com/ariya/phantomjs/commit/d938eddaf2039cc4d8a90704f736129edb8e1260)
因此,您必须等待2.0.1版本或从源代码构建PhantomJS 2.