每当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。
请帮忙。