gpt4 book ai didi

javascript - Web Worker 和引用错误

转载 作者:行者123 更新时间:2023-11-29 18:10:40 25 4
gpt4 key购买 nike

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

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

我有代码创建一个 Worker 来评估这个 javascript 代码。这里 jsCode 的值被获取为 - alert("done");

            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 的一部分传递的警报时,我假设会发生这种情况。怎么可能做这样的评估?

Uncaught ReferenceError :未定义警报

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

最佳答案

WebWorker 无法访问原始的 documentwindow 对象。因此它无法访问相应的功能。

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

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

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

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

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

关于javascript - Web Worker 和引用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27675559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com