Web工作者和参考错误

时间:2014-12-28 10:29:37

标签: javascript eval web-worker

我有一个包含java脚本代码的文本区域:

        <textarea id="jsCode">alert("done"); </textarea>

我有代码创建一个工具来评估这个javascript代码。这里jsCode的值是 - alert(&#34; done&#34;);

            var jsCode=$("#jsCode").val();

            var worker = new Worker("worker.js");
            worker.addEventListener('message', function(e) {
                console.log('Worker said: ', e.data);
            }, false);

            worker.postMessage(jsCode);

我的worker.js如下:

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

当我运行此文件时,我收到参考错误。我假设当我们尝试评估作为从文本区域获得的e.data的一部分传递的警报时,会发生这种情况。怎么可能做这样的评估?

未捕获的ReferenceError:未定义警报

也无法查看在工作人员中发布的任何控制台消息,因此我无法调试(使用Chrome和开发人员工具)

1 个答案:

答案 0 :(得分:4)

WebWorker无权访问原始documentwindow对象。因此,它无法访问各自的功能。

某些功能在WebWorker中镜像,但alert()不是其中之一。没有意义,因为WebWorker无论如何都无法访问任何形式的视觉输出。

根据浏览器的不同,console对象也是如此。但是,有一些工作要改变这一点。例如,参见Firefox bug report

至于调试,你至少有选择:

  • 在WebWorker中定义onerror处理程序以捕获所有错误,并将(序列化的)错误消息发送到原始文档以进行输出。

  • 根据this blog entry,您可以使用Chrome开发工具直接调试WebWorker。