我有一个cordova项目,我需要使用inappbrowser插件打开一个窗口,里面有一个cordova页面,而#34;父母"仍在运行。
Cordova加载index.html
,使用inappbrowser插件打开frame.html
Cordova被加载到frame.html
但是deviceready事件从未触发,5秒后我在frame.html
的控制台中收到此错误。
这只发生在使用inappbrowser插件打开的第二个webview中。
cordova.js:1183 deviceready has not fired after 5 seconds.
cordova.js:1176 Channel not fired: onFileSystemPathsReady
cordova.js:1176 Channel not fired: onCordovaInfoReady
我进行了大量搜索,并得出结论认为文件的onload中没有过多的插件或代码会延迟启动设备所需的onNativeReady事件。
当我删除cordova-plugin-file
和cordova-plugin-file-transfer
时,onFileSystemPathsReady
错误消失。
如果我删除cordova-plugin-device
,onCordovaInfoReady
错误就会消失。
但我需要这些插件 导致设备准备事件根本不发生的原因是什么? 如果不删除我需要的插件,我该怎么办呢?
Node version: v4.2.2
Cordova version: 5.4.1
Installed platforms:
android 4.1.1
ios 3.9.2
Installed plugins:
cordova-plugin-bluetoothle 2.4.0 "Bluetooth LE"
cordova-plugin-device 1.1.0 "Device"
cordova-plugin-dialogs 1.2.0 "Notification"
cordova-plugin-file 3.0.0 "File"
cordova-plugin-file-transfer 1.4.0 "File Transfer"
cordova-plugin-inappbrowser 1.1.0 "InAppBrowser"
cordova-plugin-vibration 2.0.0 "Vibration"
cordova-plugin-whitelist 1.2.0 "Whitelist"
de.appplant.cordova.plugin.background-mode 0.6.4 "BackgroundMode"
Config.xml file:
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.test.app" version="0.0.1" xmlns="http://www.w3.org/ns/widgets">
<name>TestApp</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<allow-navigation href="http://*/*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
</widget>
<!DOCTYPE html>
<html >
<head >
<meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com 'unsafe-eval' 'unsafe-inline';" >
<meta name="format-detection" content="telephone=no" >
<meta name="msapplication-tap-highlight" content="no" >
<meta name="viewport" content="user-scalable=no, initial-scale=1, height=device-height, width=device-width" >
<title >Index</title >
<script >
document.addEventListener( 'deviceready', function ()
{
console.log( 'ready' );
win = window.open( 'frame.html', '_blank', 'location=no', function()
{
console.log( arguments );
} );
}, false );
</script >
</head >
<body >
<script type="text/javascript" src="cordova.js" ></script >
</body >
</html >
<!DOCTYPE html>
<html >
<head >
<meta http-equiv="Content-Security-Policy" content="default-src * data: gap: https://ssl.gstatic.com 'unsafe-eval' 'unsafe-inline';" >
<meta name="format-detection" content="telephone=no" >
<meta name="msapplication-tap-highlight" content="no" >
<meta name="viewport" content="user-scalable=no, initial-scale=1, height=device-height, width=device-width" >
<title >Frame</title >
<script >
window.addEventListener( 'deviceready', function()
{
console.log( 'window.deviceready', arguments );
}, false );
document.addEventListener( 'deviceready', function()
{
console.log( 'document.deviceready', arguments );
}, false );
</script >
</head >
<body >
<script type="text/javascript" src="cordova.js" ></script >
</body >
</html >
更新:
我正在使用两个自我修改的插件(不是导致问题的插件),也许这是某种程度上相关的:
我需要使用inappbrowser插件,因为bluetoothle插件必须在浏览另一帧中的应用程序时保持连接。 框架还需要能够相互通信,并且都可以访问cordova库。
如果有人有其他想法如何做到这一点,我会为他们开放。
我正在研究cl.kunder.webview https://github.com/kunder-lab/cl.kunder.webview插件
答案 0 :(得分:1)
@ThisNameBetterBeAvailable,
InAppBrowser无法使用Cordova服务。
从文件(第3段)我引用
InAppBrowser窗口的行为类似于标准Web浏览器,无法访问Cordova API。
这意味着没有任何插件,没有任何事件,也没有任何服务。我试图让他们修复这部分文档,但这将是一段时间。