1
我正在通過內容腳本創建一個使用鍵綁定(即將使用javascript keydown和keyup事件處理程序)的Chrome擴展。不過,我試圖讓這個與GMail合作,但我碰到了一個麻煩。使用Gmail的Chrome擴展內容腳本中的鍵盤綁定
中下面的代碼(內容腳本)的處理函數似乎只觸發,當我通過的GChat聊天的人:
$(window).bind('keydown', function(e){console.log('yay!');});
不幸的是,它似乎並沒有激活其他地方,包括我的時候我正試圖發送一封電子郵件。我看着在Gmail網頁源,和原來所有的內容實際上與ID canvas_frame
一個iFrame顯示所在,所以我想這:
$('#canvas_frame').content().live('keydown', function(e){console.log('yay!');});
這:
$('#canvas_frame').content().find('body').live('keydown', function(e){
console.log('yay!');
});
不幸的是,那也沒用。
我manifest.json
看起來是這樣的:
{
"name": "extension",
"version": "1.0",
"description": "description",
"background_page": "background.html",
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"css": [],
"js": [
"main.js"
]
}
],
"all_frames": true,
"permissions": [
"http://*/*", "https://*/*"
]
}
我想知道是否有人曾經做過一個關於發生了什麼線索,什麼是使用Gmail這樣做的正確的方式,如果$('#canvas_frame').content().live(...)
是正確的方式去關於它。
謝謝!
哦,哇。謝謝你的收穫。 每個框架都有一個內容腳本的問題是GMail目前動態地編輯iFrames,這意味着不同的iFrames最初可能具有相同的'src'屬性,但功能不同。不過,我想出瞭如何將鍵綁定到特定iFrame內的元素。像'document.getElementById('canvas_frame')。contentDocument.onkeydown = handler'這樣的東西可以工作,如果我想用'jQuery.live'來觀察特定的元素,它也可以工作。 – yuzeh