如何在点击在inappbrowser中启动的页面上的按钮时关闭phonegap inappbrowser?

时间:2014-12-11 01:14:22

标签: javascript cordova ibm-mobilefirst

在我的混合移动应用程序(为Android和ios开发)中,我使用下面的代码window.open("sample.html","_blank","location=yes")在inappbrowser中启动sample.html页面。有了这个,它打开一个inappbrowser窗口并加载带有url栏的sample.html页面,在android中有'X'标记,在ios底部有'Done'按钮。如果我们点击android中的'X'标记或ios中的'完成'按钮,它会关闭inappbrowser。现在,当我点击sample.html中的按钮时,我想要有相同的行为。我使用了window.close()但它没有用。

我正在为我的应用程序使用IBM worklight框架。

1 个答案:

答案 0 :(得分:0)

InAppBrowser是Cordova附带的功能 您可以详细了解它,包括所有支持的event s in its documentation page

没有直接的方法可以关闭InAppBrowser实例"来自",因此需要进行解决。
这是实现目标的一种方法:

Sample project

  1. 在您的sample.html中添加一些'关闭'像这样的链接,例如:

    <!-- Point to some non-existing end-point;
         We'll catch the error and use it to close the InAppBrowser. -->
    <a href="/close">Close</a>
    

    如果你真的希望它成为一个按钮,你可以将链接设置为按钮的样式。

  2. 在Worklight应用中的common \ main.js中添加以下内容,例如:

    var InAppBrowserReference;
    
    function wlCommonInit(){
    
    }
    
    function openInAppBrowser() {
        // Use location=no,toolbar=no in order to hide the supplied 'close' buttons
        // by the InAppBrowser instance.
        InAppBrowserReference = window.open('sample.html', '_blank', 'location=no,toolbar=no');
        InAppBrowserReference.addEventListener('loaderror', closeInAppBrowser);
    }
    
    function closeInAppBrowser(event) {
        if (event.url.match("/close")) {
            InAppBrowserReference.close();
        }
    }
    
  3. 在上面的代码段中,为了简单起见,从common \ index.html调用openInAppBrowser()以打开InAppBrowser。