首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新加载铬扩展失败,因为符号已经定义。如何避免这种情况?

重新加载铬扩展失败,因为符号已经定义。如何避免这种情况?
EN

Stack Overflow用户
提问于 2022-09-07 11:53:53
回答 1查看 74关注 0票数 0

我有一个编写Chrome扩展程序,它获取一个围棋(棋盘游戏)的截图,然后下载到本地系统。

虽然扩展可以工作,但在不重新加载页面的情况下,我不能连续调用扩展两次,因为如果我尝试这样做,就会得到错误:

代码语言:javascript
复制
Uncaught SyntaxError: Identifier 'BadukFlash' has already been declared (at baduk_flash.js:1:1)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-07 13:06:45

当用户单击该操作时,扩展将html2canvas.jsbaduk_flash.js注入active选项卡。

baduk_flash.js声明了类BadukFlash。

当用户再次单击操作时,所有这些都会再次发生。即重新声明类BadukFlash。

此时,由于语法错误,baduk_flash.js停止执行。如果baduk_flash.js继续运行,那么变量bf也将被重新声明。

解决这一问题的可能方法:

最干净的方法是通过在content_scripts中使用"content_scripts“字段将内容脚本注入静态声明:

脚本/#静态声明性

当用户单击该操作时,服务工作人员应向active选项卡中的内容脚本发送消息。

但是,您必须事先知道要将内容脚本注入哪些页面。如果您不知道这一点,您必须以编程的方式注入它,并检查它是否已经被注入:

如何防止对单个事件进行多次注入/执行内容脚本?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73635057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档