我試圖寫一個網站的結構像這樣的Chrome擴展:如何使用JavaScript將事件偵聽器添加到框架窗口?
<html>
<head>
....
</head>
<frameset>
<frame>
....
</frame>
<frameset>
<frame>
<html>
<head>
</head>
<body>
<select id="theThingIWant"></select>
</body>
</html>
</frame>
<frame>
....
</frame>
</frameset>
</frameset>
</html>
我知道這看起來完全瘋了,但它是很久以前完成的,它的東西,我在使用工作。我試圖訪問select
元素,但我一直能夠這樣做的唯一方法是將click
偵聽器添加到window
對象,該對象檢查event.target
以確保id
是我正在尋找的對象。
理想情況下,我想在事件之後觸發一個函數,其中Tab
鍵被按下,然後基本上做同樣的事情,但我似乎無法觸發偵聽器,無論我在哪裏嘗試並附上它。
我的點擊事件,做什麼,我想:
window.addEventListener('click', function(e) {
if (e.target.id === 'selAxisViaAEHybridContent')
remove_content_IDs(e.target);
});
我keydown事件,不工作(控制檯日誌不會發生):
window.addEventListener('keydown', function(e) {
console.log(e);
});
我可以訪問frame
那該select
元素使用document.getElementsByTagName('frameset')[1].children[0]
,但該.children
屬性是一個空數組。當我將事件附加到該節點時,它仍然不起作用。有沒有人知道我能做些什麼來解決這個問題?最終,當select
元素通過Tab
密鑰關注時,我想要運行remove_content_IDs()
。
這正是我所期待的。你是一個真正的紳士。 –
哦!謝謝你的稱讚。 :) –
我實際上有一個後續問題,因爲這只是一種解決我的問題: 每次我點擊框架中的鏈接,該框架的DOM重新加載,似乎無論我創建的事件監聽器當主窗口加載時丟失幀。我怎樣才能防止或解決這個問題? –