Cordova-在应用程序中加载外部URL内容需要花费太多时间



我有一个cordova应用程序,可以直接从客户端网站加载内容。我已经像config.xml文件中的<content src="https://example.com/ios/index.html">一样使用了它。我使用了6秒的防溅屏延迟。问题是当防溅屏隐藏时会显示黑屏5-10秒,然后显示客户端网站内容。有时我会收到错误CONNECTION TO SERVER WAS UNSUCCESSFULL。我也指定了<preference name="loadUrlTimeoutValue" value="700000" />,但仍然有同样的问题。有人对cordova ios和android应用程序有同样的问题吗?有人能帮我解决这个问题吗。

你不应该那样做。现在我不想播放这个剧本,你问A,我告诉你做B,别担心,但这真的不是你应该做的。

您应该让cordova加载一个index.html,该index.html加载一个javascript文件cordova.js。你不需要实际拥有它,编译应用程序时会包含js文件。

然后你应该添加白名单插件,以防你还没有,这样你的网站才能正确加载。https://www.npmjs.com/package/cordova-plugin-whitelist

您应该在config.xml中禁用splashscreen的自动隐藏,如下所示:

<preference name="AutoHideSplashScreen" value="false" />

然后,你应该让javascript像这样加载你的网站的全屏iframe,然后检测加载何时完成:(这应该进入你的index.html,在cordova应用程序中(

<html>
<head>
<title></title>
</head>
<body>
<iframe id='frameid' onload='iframeLoaded();' src='https://mywebsite.com/mypage.html' style='border: 0; width: 100%; height: 100%'>Your browser doesn't support iFrames.</iframe>
<script src='cordova.js'></script>
<script>
iframe = document.getElementById("frameid");

iframe = document.getElementById("frameid");

function ready(callback){
// in case the document is already rendered
if (iframe.readyState!='loading') callback();
// modern browsers
else if (iframe.addEventListener) iframe.addEventListener('DOMContentLoaded', callback);
// IE <= 8
else document.attachEvent('onreadystatechange', function(){
if (iframe.readyState=='complete') callback();
});
}

ready(function(){
setTimeout(function(){
navigator.splashscreen.hide();
},555)
});



</script>
</body>
</html>

我已经几个月没用科多瓦了,但如果我什么都没忘记的话,我就是这么做的——希望我没有。。。我没有时间测试这个,但你明白要点了:

  • 应用程序启动
  • 显示启动屏幕
  • 在指向https网站的全屏中加载带有Iframe的Index.html
  • 等待iframe完成加载
  • 关闭防溅屏

如果您遇到任何问题,请告诉我,我可以进一步帮助您。

最新更新