如何在cordova项目中异步打开inappbrowser

Posted

技术标签:

【中文标题】如何在cordova项目中异步打开inappbrowser【英文标题】:how to open inappbrowser asynchronously in cordova project 【发布时间】:2016-09-22 12:49:50 【问题描述】:

我正在 phonegap cordova 中创建一个 android 应用程序,这里我正在使用 appbrowser 插件将网站转换为 webview。我的问题是在加载 inappbrowser 时它在应用程序中显示白屏,有什么办法可以避免这个空白屏幕。我有为应用设置闪屏,但对应用浏览器无效。

我可以通过以下一种方式解决问题

1)如果有任何方法可以将闪屏设置为inappbrowser

2)如果我能够异步加载应用程序浏览器,在加载期间我可以显示应用程序的闪屏

3)还有其他解决方案吗?

我使用了以下 javascript 代码

function onDeviceReady() 
    var url = 'http://www.mahadevaastro.com/bayarkart/';
    var target = '_blank';
    var options = "location=no,zoom=no"
    var option1 = "zoom=no"
    var ref = cordova.InAppBrowser.open(url, target, options);
   //   var ref = window.open(url, target, options, option1);

    ref.addEventListener('loadstart', loadstartCallback);
    ref.addEventListener('loadstop', loadstopCallback);
    ref.addEventListener('loadloaderror', loaderrorCallback);
    ref.addEventListener('exit', exitCallback);

    function loadstartCallback(event) 

        showSpinner();

    

    function loadstopCallback(event) 
        hideSpinner();
    

    function loaderrorCallback(error) 
        console.log('Loading error: ' + error.message)
    

    function exitCallback() 
        console.log('Browser is closed...')
    

    function showSpinner() 
        navigator.notification.activityStart("Bayar Speed Kart", "Its loading....");
        //  $.mobile.loading("show");
    

    function hideSpinner() 
        navigator.notification.activityStop();
        //$.mobile.loading("hide");
    

    // Handle the Cordova pause and resume events
    document.addEventListener( 'pause', onPause.bind( this ), false );
    document.addEventListener( 'resume', onResume.bind( this ), false );

    // TODO: Cordova has been loaded. Perform any initialization that requires Cordova here.
;

【问题讨论】:

【参考方案1】:

曾经我也遇到过同样的问题,我解决问题的方法是在 loadstart 方法中加载 gif 图像

        ref.addEventListener("loadstart", function () 

        ref.executeScript(
           //  code: "document.body.style.backgroundColor = 'yellow';" ,
               code: "document.body.style.background = 'url(loading.png)';" ,
                // url("paper.gif");
           function (values) 
                //alert(values[0]);
            
        );
    );

【讨论】:

以上是关于如何在cordova项目中异步打开inappbrowser的主要内容,如果未能解决你的问题,请参考以下文章

如何在科尔多瓦混合移动应用程序中集成 NetScalar 登录?

如何添加 Android 意图以在 Cordova/Ionic 项目中打开谷歌地图?

在 Xcode 上模拟 Cordova 应用程序时如何更新代码?

在浏览器中打开 Cordova 应用程序时无法测试它

如何调整cordova webview ios 10的大小

在 Cordova 中播放音频文件后如何打开页面?