无法在Chrome扩展程序中使用鼠标悬停在广告上

时间:2015-03-10 17:04:12

标签: javascript jquery google-chrome-extension mouseevent ads

作为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函数之外,则会在页面上任何元素的鼠标悬停时触发。

我已经打了一个这样的墙,所以任何帮助都表示赞赏。感谢

1 个答案:

答案 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