deviceready 事件未在 Angular 混合应用程序中触发
deviceready Event not fired in an Angular hybrid app
我正在构建一个全平台 Angular 6 应用程序,它将与 Cordova 8.1.2 一起包装不幸的是我无法触发 deviceready 事件。
我有两个单独的项目,一个用于 Angular,一个用于 Cordova,我能够构建 Angular 项目并使用以下命令创建一个 android apk:
ng build --prod --base-href . --output-path ../Cordova/CordovaMobileApp/www/ & cd ../Cordova/CordovaMobileApp & cordova run android & cd ../../NxAngularMVI
但是现在我需要使用 Cordova 插件,为此我需要检测 deviceready 事件。
在我的 index.html 脑袋中,我已经包含了:
<script type=”text/javascript” src=”cordova.js”></script>
在我的 main.ts 文件中,我试图等待事件发生在 bootstrap 我的应用程序上。
const onDeviceReady = () => {
console.log('Bootstrap ON!');
platformBrowserDynamic().bootstrapModule(AppModule).catch(err =>
console.log(err));
};
document.addEventListener('deviceready', onDeviceReady, false);
应用程序从未初始化,因为从未触发设备就绪事件。我尝试了几种变体,这些变体是我在 bootstrapping 方法的堆栈溢出时发现的,但无济于事。我尝试重新安装从框架到平台再到插件的每个 cordova 部分,但没有任何帮助。我已经在 Galaxy S9 和摩托罗拉 G5 上对其进行了测试。
由于 Cordova API 提供的这个功能对于我的项目来说是必须的,所以我需要你们的帮助。谢谢!
正如本帖 中已回答的那样,您可以在 Chrome 控制台中调试您的 cordova 应用程序,请按照以下步骤操作
- 将您的设备连接到已安装的应用程序(必须是 DEBUG
版本,不是发行版)
- 打开 Chrome 控制台,在最后一个选项卡附近您应该会看到一个三
垂直点图标,单击它和 select 'more tools',然后单击“远程”
devices',您应该会看到已连接的设备已列出。 Select它
- 在列表中找到您的应用程序并单击 'inspect' 按钮,位于
此时您应该也在 Chrome 浏览器中打开您的应用程序。
由于应用程序没有启动,您可以检查 Chrome 控制台是否有错误,
让我们知道
干杯
我 运行 遇到了这个完全相同的问题。
我的解决方法:
将 <script type=”text/javascript” src=”cordova.js”></script>
移到 <body>
内 <app-root>
旁边。当我在 <head>
deviceready 中有脚本标签时,永远不会触发。
我通过查看使用 cordova cli 生成的示例项目弄清楚了这一点。如果您查看他们的 index.html,他们在正文中有脚本标记。
我正在构建一个全平台 Angular 6 应用程序,它将与 Cordova 8.1.2 一起包装不幸的是我无法触发 deviceready 事件。
我有两个单独的项目,一个用于 Angular,一个用于 Cordova,我能够构建 Angular 项目并使用以下命令创建一个 android apk:
ng build --prod --base-href . --output-path ../Cordova/CordovaMobileApp/www/ & cd ../Cordova/CordovaMobileApp & cordova run android & cd ../../NxAngularMVI
但是现在我需要使用 Cordova 插件,为此我需要检测 deviceready 事件。
在我的 index.html 脑袋中,我已经包含了:
<script type=”text/javascript” src=”cordova.js”></script>
在我的 main.ts 文件中,我试图等待事件发生在 bootstrap 我的应用程序上。
const onDeviceReady = () => {
console.log('Bootstrap ON!');
platformBrowserDynamic().bootstrapModule(AppModule).catch(err =>
console.log(err));
};
document.addEventListener('deviceready', onDeviceReady, false);
应用程序从未初始化,因为从未触发设备就绪事件。我尝试了几种变体,这些变体是我在 bootstrapping 方法的堆栈溢出时发现的,但无济于事。我尝试重新安装从框架到平台再到插件的每个 cordova 部分,但没有任何帮助。我已经在 Galaxy S9 和摩托罗拉 G5 上对其进行了测试。
由于 Cordova API 提供的这个功能对于我的项目来说是必须的,所以我需要你们的帮助。谢谢!
正如本帖
- 将您的设备连接到已安装的应用程序(必须是 DEBUG 版本,不是发行版)
- 打开 Chrome 控制台,在最后一个选项卡附近您应该会看到一个三 垂直点图标,单击它和 select 'more tools',然后单击“远程” devices',您应该会看到已连接的设备已列出。 Select它
- 在列表中找到您的应用程序并单击 'inspect' 按钮,位于 此时您应该也在 Chrome 浏览器中打开您的应用程序。
由于应用程序没有启动,您可以检查 Chrome 控制台是否有错误, 让我们知道
干杯
我 运行 遇到了这个完全相同的问题。
我的解决方法:
将 <script type=”text/javascript” src=”cordova.js”></script>
移到 <body>
内 <app-root>
旁边。当我在 <head>
deviceready 中有脚本标签时,永远不会触发。
我通过查看使用 cordova cli 生成的示例项目弄清楚了这一点。如果您查看他们的 index.html,他们在正文中有脚本标记。