诡异的Chrome插件事件机制
最近尝试开发Chrome插件,自然使用JQ来当基础。结果遇到一个问题:
我使用“程序注入(Programmatic injection)”的方式执行代码,试图实现自动填写表单的功能。因为目标网页的表单比较智能,前面的选项会影响后面选项的内容,所以必须在val(value)之后广播change事件来触发后面表单内容的填充。
结果失败了。直接在浏览器里使用控制台运行代码,没有问题,所以代码本身应该正确;确认需要的JS文件已经一一加载。于是我开始了漫长而挫折的调试之路。多次失败之后,我打开《英雄无敌三》换换心情……玩了一会儿游戏意外退出了,而我灵机一动,会不会是JQ广播事件的问题?在控制台调试没有问题,但是在content script里就不行,很可能是chrome把两段代码放在彼此隔离的环境中运行导致的。于是我放弃直接$(selector).change(),改用原生的dispatchEvent,结果,运行成功!
于是我猜,应该是JQ和Chrome的插件机制稍有冲突。可能以后做插件的话,还是Closure Library好些吧。
PS:写插件的好处是不用考虑兼容性,朝着Chrome写就行了。
相关文章
分享自制小工具:Automate GPT – 在 ChatGPT 里批量执行任务
其实这个小工具是我很早以前开发的,最近因为有需求,又翻出来修了修,觉得蛮有用的,分享给大家。Automate […]
2025-04-305 分钟
【教程】浏览器扩展中实现一键登录 Google(2)
本文接续前一篇 【教程】浏览器扩展中实现一键登录 Google(1),重点介绍代码相关的部分。 SSO 简介 […]
2024-05-1110 分钟
【教程】浏览器扩展中实现一键登录 Google(1)
本文分享我最近开发 AutomateGPT 扩展时集成 Google SSO 的经验。除了 Google 外, […]
2024-04-148 分钟


