加载phonegap网站后在android上隐藏启动画面
Posted
技术标签:
【中文标题】加载phonegap网站后在android上隐藏启动画面【英文标题】:Hide splash screen on android once phonegap site has loaded 【发布时间】:2012-10-03 16:54:46 【问题描述】:我有一个使用媒体查询在手机上看起来不错的网站,我将它封装在 phonegap 中,这样我也可以将它作为应用程序使用。我已将 super.loadUrl 设置为我的网站,并且这可以正常工作,我也有一个工作启动画面,我想在网站加载之前跟上它。我遇到了this blog post 并按照说明进行操作。如果我是 index.html(应用程序主页)的 super.loadUrl,但如果我 loadUrl 的实际网站则不行。
启动画面代码(主java文件)
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl("My External Site Url", 20000);
Index.html 代码(如果我将 URL 加载到它,这可以工作,但我想将 URL 加载到我的站点)
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady()
navigator.splashscreen.hide();
但是,当我在我的外部 html 文件中使用上述代码(并包含 cordova.js)时,它无法识别 onDeviceReady,因此启动屏幕不会自行隐藏,我会等待 20 秒。
我错过了什么吗?我什至可以从外部 html 文件(例如,未内置到应用程序中的文件)中使用 onDeviceReady,还是应该这样工作而我只是引用了cordova 错误?
【问题讨论】:
嘿,安迪,我们必须弄清楚为什么您没有收到 deviceready 事件。如果您没有收到该事件,您将无法隐藏启动画面。当您尝试从远程位置加载它时,您在“adb logcat”中看到了什么? 嗨 Simon,我不确定这是否是您需要的,但我通过 AVD 运行了它,并将其放入 LogCat 选项卡中:pastebin.com/vRwBXENh 如果有帮助,当我执行alert('navigator: ' + navigator + '\nsplashscreen: ' + navigator.splashscreen);
时(通过我的外部 html 文件上的浏览器,在包含 Cordova 之后)我得到 navigator: [object Navigator], splashscreen: undefined
但我的手机或模拟器没有收到警报,还没有
是的,您永远不会收到 deviceready 事件,因此 PhoneGap 未成功加载。这就是 navigator.splashscreen 未定义的原因。您的 JS 中有一个错误,您可以在日志“192.168.1.4:8080/IntDemo/js/jquery.plugin.js: Line 13 : Uncaught TypeError: Cannot read property 'oSort' of undefined”中看到该错误,您可能应该先修复它。除此之外,如果您可以发布您的 html 以确保您已正确设置。
在登录页面:pastebin.com/cpLgU7fB 中,javascript 引用绝对有效,因为当我查看源代码并单击它时,cordova 会打开。至于 javascript 错误,我知道这一点,并且已经有一段时间了,需要解决它,但我认为它不会影响它
【参考方案1】:
原来prototype.js 的一个旧包含把这搞砸了。一旦我删除它,它就非常有效。
对于未来的人,我得到的错误是:
应用对触摸没有反应,无法使用输入按钮和超链接。 如果您按住输入、超链接等,它会显示橙色焦点框,但从未将我带到链接或激活输入按钮(光标或键盘) 原型让我在任何时候都无法准备好设备,但没有引发 JS 错误(IE 不喜欢 addEventListener 除外)【讨论】:
【参考方案2】:尝试这样做:
<script>
function init()
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady()
navigator.splashscreen.hide();
</script>
<body onload="init()">
虽然您使用的是 jQuery,但您可能希望将其更改为:
$(document).ready(function()
document.addEventListener("deviceready", onDeviceReady, false);
);
【讨论】:
【参考方案3】:首先添加闪屏插件如下:
$ phonegap plugin add org.apache.cordova.splashscreen
第二次构建项目,“splashscreen.js”将合并到“phonegap.js”中
$ phonegap local build
祝你好运
【讨论】:
是否回答了 OP 中提出的问题?以上是关于加载phonegap网站后在android上隐藏启动画面的主要内容,如果未能解决你的问题,请参考以下文章
PHONEGAP ANDROID:仅在应用程序主屏幕 (SplashScreen) 上隐藏状态栏
在启动时加载外部链接的 Phonegap 应用程序 - Android
使用插件访问从 phonegap Cordova 中的外部 URL 加载 Webste
键盘使用 iFrame/object 和 JQTouch 隐藏 PhoneGap Build 3.1 中的 iOS 输入字段