簡體   English   中英

從父窗口將事件傳遞給iframe? (Javascript)

[英]Pass an Event to an iframe from the parent window? ( Javascript )

在開始這個問題之前,我不得不說我到處尋找答案,但沒有找到答案。 還試過像dispatchevent,postmessage,......但沒有任何效果。

情況就是這樣。

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

因為iframe是一個加載的頁面,其中是一個Eventhandler並對箭頭作出反應。

我試過以下但沒有奏效

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);        

有沒有人知道如何解決這個問題?

你想要這樣的東西:

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/

最后,我已經解決了這個問題。 我在iframe上使用了parent.document從parnet端捕獲事件並在iframe上再次創建它們並且效果很好!

這有效,但使用jQuery。

window.addEventListener("keydown", (evt) => {
    const {type, key} = evt;
    parent.$("body").trigger(parent.$.Event(type, {key}));
})

有趣的是, parent.$.Event(evt)直接不起作用。

我認為這個jquery論壇帖子應該有所幫助

https://forum.jquery.com/topic/how-to-pass-mouse-events-to-an-iframe

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM