2015-02-23 491 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

相关问题