我正在尝试使用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中触发事件,而不是在我的应用中。
我使用documentation尝试了几件事,但我并不真正理解如何让事情按照我想要的方式运作。
所以任何帮助都会很棒!感谢。
答案 0 :(得分:1)
iframe加载后,您可以在iframe的内容窗口中注册事件处理程序。
var iframe = document.getElementById("iframe");
iframe.onload = function(){
iframe.contentWindow.addEventListener('keydown',yourHandler);
}
答案 1 :(得分:0)
如果您想在iframe和窗口之间启用某些通信,则可以使用prothole。请注意,您可能还需要访问为iframe提供服务的其他域。希望它有所帮助。
答案 2 :(得分:0)
我终于通过使用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);
}
});
也许不是正确的方法,但它有效。