【问题标题】:Node Webkit - Fire Event from iframe to the appNode Webkit - 从 iframe 到应用程序的触发事件
【发布时间】:2015-03-05 09:19:21
【问题描述】:

我正在尝试使用 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 尝试了几件事,但我真的不明白如何让事情按我想要的方式工作。

所以任何帮助都会很棒!谢谢。

【问题讨论】:

    标签: javascript events iframe browser node-webkit


    【解决方案1】:

    您可以在 iframe 加载后立即在 iframe 的内容窗口中注册您的事件处理程序。

    var iframe = document.getElementById("iframe");
    iframe.onload = function(){
       iframe.contentWindow.addEventListener('keydown',yourHandler);
    }
    

    【讨论】:

      【解决方案2】:

      如果你想在 iframe 和你的窗口之间启用一些通信,那么你可以使用 prothole 。请注意,您可能还需要访问为 iframe 提供服务的其他域。希望对您有所帮助。

      【讨论】:

      • 这不是一个经典的网络应用程序,所以我认为 node-webkit 中有一种方法可以在无需访问其他域的情况下做到这一点。因为我的“信息亭应用程序”的目的是加载任何网站。 Nodewebkit 提供了一种在 iframe 中注入 javascript 的方法(使用 window.eval() ),但我不太明白如何使用它。
      【解决方案3】:

      我终于找到了一种使用 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);
          }
      });
      

      也许不是正确的方法,但它确实有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-19
        • 2015-06-13
        • 1970-01-01
        • 1970-01-01
        • 2016-02-14
        • 1970-01-01
        • 2013-10-01
        相关资源
        最近更新 更多