2015-02-23 111 views
3

在開始這個問題之前,我不得不說我真的到處搜索找到答案,但沒有發現。還嘗試了很多事情,如dispatchevent,postmessage,但沒有任何工作。將事件從父窗口傳遞給iframe? (Javascript)

這是這種情況。

我有一個主窗口,在那裏我有4個簡單的按鈕,如龍牙,uparrow,左,右箭頭。我想創建一個模擬事件傳遞給這個主窗口中的iframe。

在iframe是一個頁面加載其中是一個事件處理程序,並對箭頭作出反應。

我嘗試以下,但沒有工作

var event = document.createEvent('KeyboardEvent'); // create a key event define the event 
event.initKeyboardEvent("keypress",  // typeArg,               
true,    // canBubbleArg,               
true,    // cancelableArg,              
null,    // viewArg, Specifies UIEvent.view. This value may be null.  
false,   // ctrlKeyArg,                
false,   // altKeyArg,               
false,   // shiftKeyArg,              
false,   // metaKeyArg,              
39,    // keyCodeArg (39 is the right arrow key),              
0);    // charCodeArg); 

document.getElementById('vid').dispatchEvent(event);   

是否有任何人誰擁有一個想法,我怎麼能解決這個問題呢?

+0

你是否控制了iframe和主窗口中的JS?如果沒有,這是不可能的,如果沒有雙方的同意,這是不可能的 – winhowes 2015-02-23 11:02:41

+0

我控制他們兩個 – Moha 2015-02-23 11:27:17

+0

他們在同一個域名? – winhowes 2015-02-23 17:05:45

回答

1

最後,我已經整理出來的問題。我在我的iframe上使用了parent.document來從parnet端捕獲事件,並在iframe上再次創建它們,它效果很好!

+3

你有代碼示例嗎? – Roel 2017-07-06 12:01:10

1

你想是這樣的:

var iframe = document.getElementById('something'); 
var iframeEvent = new Event('iframe-keypress'); 

document.addEventListener('keypress', function (e) { 
    iframe.dispatchEvent(iframeEvent); 
}); 

iframe.addEventListener('iframe-keypress', function (e) { 
    console.log(e); 
}); 

監聽文件上的事件,然後自定義事件傳下來的iframe 。

的jsfiddle - http://jsfiddle.net/rfkqe64j/

+0

不幸的是,這不會將事件傳遞給iframe。我已經在iframe中設置了事件偵聽器,並且它沒有得到任何東西:( – Moha 2015-02-23 12:06:34

+0

您是否點擊小提琴?加載小提琴,調焦輸出,按下一些按鍵,然後在控制檯中尋找。 – 2015-02-23 12:30:12

+0

http://gyazo.com/53c4954fca10f1fb82025d248047302f - demo :) – 2015-02-23 12:32:20

相關問題