作为Chrome扩展程序的一部分,我正在尝试检测您何时将鼠标悬停在广告上。现在,我只在纽约时报的头版进行测试。内容脚本的问题区域如下:
$(document).ready(function (){
setTimeout(function() {
console.log("starting...");
console.log(document.querySelectorAll("iframe"));
var frames = $("iframe").contents().find(".ad-frame.frame-for-homepage");
console.log(frames);
frames.on("mouseover", function(event){
console.log("on ad");
});
}, 10000);
});
setTimeout函数是一个特定于在页面上获取正确iframe的黑客。 console.log显示它会选择包含广告的正确iframe,但不会触发mouseover事件。它实际上似乎不会运行querySelectorAll行以外的任何内容,因为没有进一步的console.logs出现。
如果我将鼠标悬停在setTimeout函数之外,则会在页面上任何元素的鼠标悬停时触发。
我已经打了一个这样的墙,所以任何帮助都表示赞赏。感谢
答案 0 :(得分:0)
选择器不正确,您可以简化代码,使其有效,因为广告iframe
具有类.ad-frame.frame-for-homepage
。这很好用:
$(document).ready(function (){
setTimeout(function() {
console.log("starting...");
console.log(document.querySelectorAll("iframe"));
var frames = $("iframe.ad-frame.frame-for-homepage");
console.log(frames);
frames.on("mouseover", function(event){
console.log("on ad");
});
}, 10000);
});
修改:将其作为Chrome扩展程序进行测试,并且工作正常,控制台在鼠标悬停在广告上时“登录广告”,除了顶部的闪存(我已检查并且iframe有height:0
)