将事件从父 window 传递到 iframe? ( Javascript )
Pass an Event to an iframe from the parent window? ( Javascript )
在开始这个问题之前,我不得不说我真的到处寻找答案,但没有找到。还尝试了很多事情,例如 dispatchevent、postmessage 等,但没有任何效果。
是这样的
我有一个主 windows,其中有 4 个简单的按钮,例如向下箭头、向上箭头、向左箭头和向右箭头。我想创建一个事件模拟传递给位于此主要 window.
中的 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);
有没有人知道我该如何解决这个问题?
我认为这个 jquery 论坛帖子应该有所帮助
https://forum.jquery.com/topic/how-to-pass-mouse-events-to-an-iframe
你想要这样的东西:
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)
直接不行。
使用postMessage
。它完美运行。
document.getElementById('vid').contentWindow.postMessage(event);
在开始这个问题之前,我不得不说我真的到处寻找答案,但没有找到。还尝试了很多事情,例如 dispatchevent、postmessage 等,但没有任何效果。
是这样的
我有一个主 windows,其中有 4 个简单的按钮,例如向下箭头、向上箭头、向左箭头和向右箭头。我想创建一个事件模拟传递给位于此主要 window.
中的 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);
有没有人知道我该如何解决这个问题?
我认为这个 jquery 论坛帖子应该有所帮助
https://forum.jquery.com/topic/how-to-pass-mouse-events-to-an-iframe
你想要这样的东西:
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)
直接不行。
使用postMessage
。它完美运行。
document.getElementById('vid').contentWindow.postMessage(event);