【发布时间】:2017-11-23 15:40:19
【问题描述】:
我正在测试 youtube 的 chrome 扩展,但我遇到了一个问题,即 mouseenter 被多次启动。
这是我在缩略图上的简单鼠标输入:
$( "body" ).on('mouseenter', '#thumbnail', function() {
console.log('click');
});
现在,一旦页面加载并且我将鼠标悬停在任何缩略图上,它只会被触发一次,并且每次操作都会在控制台内显示一次点击文本。
当我浏览到不同的 youtube 部分时,问题就开始了,比如说 - 趋势。现在,如果我再次将鼠标悬停在趋势页面中的缩略图上,则单击文本将在控制台中每个单个操作出现 3 次。如果我再次浏览回主页,每次悬停操作时,它的输出会增加一倍或三倍。
我尝试过 .off 方法,但没有任何区别。问题可能出在哪里?
这是我将 jquery 和函数 js 加载到网站的 js:
chrome.tabs.onUpdated.addListener(function (tabId , info) {
if (info.status === 'complete') {
chrome.tabs.executeScript({
file: 'jquery-3.2.1.min.js'
});
chrome.tabs.executeScript({
file: 'payload.js'
});
}
});
会不会是每次youtube网站在里面加载不同的页面时都会加载executeScript?
【问题讨论】:
-
请edit 成为主题的问题:包括一个重复问题的minimal reproducible example。对于 Chrome 扩展程序或 Firefox WebExtensions,这几乎总是意味着包含您的 manifest.json 和一些背景、内容和/或弹出脚本/HTML。寻求调试帮助的问题(“为什么这段代码没有按我想要的方式工作?”)必须包括:(1)期望的行为,(2)特定的问题或错误以及(3)重现它所需的最短代码在问题本身中。另请参阅:What topics can I ask about here? 和 How to Ask。
-
一种简单的方法来测试您的 payload.js 是否在同一上下文中多次加载,就是在开头添加一个无条件的
console.log()脚本。
标签: jquery google-chrome-extension youtube