Chrome扩展程序 - 在Gmail中不起作用

时间:2014-02-24 05:41:11

标签: javascript html google-chrome-extension gmail keydown

扩展有什么作用?

每当keydown上有textarea个事件时,我的扩展程序的detector.js内容脚本会调用一个函数并操纵textarea的值。 由于Gmail不会在“撰写邮件”中使用<textarea>,而是div使用role='textbox',因此我尝试使用以下内容来抓住它:

console.log("---------------------------------");

var div = document.getElementsByTagName("div");
var temp = [];

for(var i = 0, len = div.length; i < len; i++){
    var node = div[i];
    if(node.hasAttribute("role")){
        if(node.getAttribute("role") === "textbox"){
            temp.push(node);
        }
    }
}

div = temp.slice(0);

var textarea = document.getElementsByTagName("textarea");  // for the normal textboxes

// Log to console the <#NodeList>s
console.log(div);
console.log(textarea);

// Attach the event listeners
for(var i = 0, len = div.length; i < len; i++){
    div[i].addEventListener("keydown", keyDown, false);
}

for(var i = 0, len = textarea.length; i < len; i++){
    textarea[i].addEventListener("keydown", keyDown, false);
}

function keyDown(e){
    // some code....
}

那么问题是什么

在像StackOverflow这样的普通页面上,我得到的输出类似于:

====================================================== 
Array[0]
NodeList[2]

我在Gmail上获得了什么:

// Nothing, no logs, no errors, not even the `----` line :(

我尝试了什么:

所有的东西,在这里检查了所有类似的问题,并做了很多console.log,但当然没有用。

限制:

我不想使用jQuery或类似的插件,只是好老的香草JS。

更多链接:

Here is my manifest.json

请帮忙。

1 个答案:

答案 0 :(得分:0)

点击&#34;撰写邮件&#34;按钮,gmail打开一个新的IFrame。 您必须为DOM添加一个侦听器以检查其上的新IFrame。 看看这个solution