[英]Node Webkit - Fire Event from iframe to the app
我正在尝试使用nodewebkit制作一个迷你信息亭浏览器(全屏,最小选项等)。 信息亭浏览器的结构如下:
<!DOCTYPE html>
<head>
...
</head>
<body>
<!-- placeholder until iframe is loaded -->
<div class="placeholder">
<div class="loading">Loading</div>
</div>
<iframe id="iframe" src="" nwfaketop nwdisable></iframe>
<script type="text/javascript">
// Basic features of the kiosk browser
document.onkeydown = function(evt) {
//Toggle FullScreen on F1 or F11
if (evt.keyCode == 112 || evt.keyCode == 122) {
win.toggleKioskMode();
}
...
}
...
loadIframe();
...
</script>
</body>
问题是,一旦加载并显示了iframe(宽度和高度为100%),就会在此iframe中触发该事件,而不是在我的应用中触发该事件。
我已经使用文档尝试了几件事,但是我并不太了解如何使事情以我想要的方式工作。
因此,任何帮助都会很棒! 谢谢。
您可以在iframe加载后立即在iframe的内容窗口中注册事件处理程序。
var iframe = document.getElementById("iframe");
iframe.onload = function(){
iframe.contentWindow.addEventListener('keydown',yourHandler);
}
如果要在iframe和窗口之间启用某些通信,则可以使用prothole 。 请注意,您可能还需要访问为iframe服务的其他域。希望它会有所帮助。
我终于找到了一种使用document-end
侦听器的方法,该方法在加载窗口或子iframe(在onload事件之前)时触发。
win.on('document-end', function(frame) {
if(frame != null){ // If frame is not the window but an Iframe
frame.contentDocument.body.addEventListener('keydown', yourScript);
}
});
也许不是执行此操作的正确方法,但它确实有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.