Chrome扩展程序 - 内容脚本从AJAX链接/导航中多次堆积

del*_*ta9 5 google-chrome google-chrome-extension google-chrome-devtools

我非常接近让我的Chrome扩展程序完美运行,但现在我遇到了最后一个问题.

这个问题似乎与在Facebook等网站上重复注入的内容脚本有关,在点击链接时不会重新加载整个页面等...

我认为这个问题与网站非常依赖AJAX有关.

如果我刷新整个页面,或者是第一次加载它,那么就没有问题了.我的扩展程序运行并正确注入内容脚本.

但是,如果我在初始时加载页面,然后点击网站上的链接,Facebook的"内容部分"将加载您点击的任何链接,而顶部的浮动蓝色导航栏不会刷新或更改一点都不

IE整个页面不重新加载.由于站点的"内容部分"和导航栏都在同一帧中,因此内容脚本只会为您单击的每个链接再次注入.

所以最终我在我的控制台日志中看到它正在运行2X,3X,4X,5X等.当我点击更多链接时,每次增加1.

所以我的问题是:

是否有一种简单的方法可以在再次注入内容脚本之前检查内容脚本是否已存在/活动?或者还有什么可以用来解决这种情况?

Ala*_*air 1

我在为扩展程序编写内容脚本时预测到了类似的问题,因此我<body>使用扩展程序名称和版本向每个页面的元素添加了一个唯一的属性。

内容脚本所做的第一件事是检查该属性是否已编写脚本,如果已编写则停止。否则,它将添加此属性(值为true)并继续其用途。

如果您想查看我的解决方案

该技术稍微复杂的方面是使用消息传递来获取版本并将清单(在 AJAX 请求中检索)解析为 JSON 对象。

要准确了解我是如何实现这一目标的,请查看此处的initonRequestHelper函数;

当然,您可以对版本进行硬编码或完全忽略它。只要属性名称是唯一的。