【问题标题】:Do web extension's content script run on the main thread of a web page?Web 扩展的内容脚本是否在网页的主线程上运行?
【发布时间】:2020-08-07 13:51:58
【问题描述】:

我的网页正在运行图像识别算法(tensorflow js)。除此之外,它还完成了许多前端繁重的任务......在我添加 ML 算法之前,它运行良好。由于 tensorflow 算法使我的网页变慢且无响应,因此我不得不将它们删除。我想知道我是否将它们放在网络扩展中,它是否仍会在主线程上运行,还是会在不同的线程上运行。我的 Web 应用程序需要 DOM 访问,而 Web 扩展具有...(任何在网页上运行 ml 图像识别算法而不干扰网页的建议也会有所帮助)

【问题讨论】:

  • JavaScript 中没有线程,只有工人,但它们是不同的野兽。内容脚本在网页的唯一环境中运行。根据您的具体操作,您可能可以创建一个 iframe,该 iframe 指向您通过 web_accessible_resources 公开的扩展程序中的 html 文件,并在内部进行处理,甚至在该 iframe 中创建工作人员。

标签: javascript google-chrome-extension firefox-addon-webextensions tensorflow.js


【解决方案1】:

您最好的选择是将其中一项任务转移到 web worker 上,这样它就不会阻塞网页上的主线程进行渲染等。请参阅这篇可爱的文章:

https://developers.google.com/web/updates/2018/08/offscreen-canvas

例如,我已经设法在 Chrome 扩展中使用带有 OffscreenCanvas 的 TFJS 模型,它对我来说效果很好。值得一试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2018-07-25
    • 2020-06-13
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多