繁体   English   中英

科尔多瓦:警报未在桌面环境中显示(它们在模拟器和真实设备上均能正常工作)

[英]Cordova: Alerts not shown on desktop environment (They work fine on simulator and real device)

我正在使用Cordova进行宠物项目。 目前,目标平台仅是IOS。在开发过程中,我一直在使用警报地标来确保我的意图确实在发生(我个人认为,在日志很方便的简单情况下,警报更容易使用在复杂的情况下)。 在代码中的某个时候,我有一个按钮和一个单击该按钮时会执行的函数。

包含相关的cordova插件,如您在终端输出下面看到的那样:

cordova plugins
cordova-plugin-dialogs 2.0.1 "Notification"
cordova-plugin-geolocation 4.0.1 "Geolocation"
cordova-plugin-whitelist 1.3.3 "Whitelist"

为了方便起见,我将警报功能绑定到窗口对象中:

document.addEventListener('deviceready', function () {
  console.log("deviceready");
  if (navigator.notification) { 
      window.alert = function (message) {
          navigator.notification.alert(
              message,    // message
              null,       // callback
              "My Awesome App", // title
              'OK'        // buttonName
          );
      };
      startApp();  // This is the kick off point for my app
  }
}, false);

更新3 :我怀疑在window.alert分配上面正在调试东西。 如果我注释掉此作业,则常规警报会按预期工作(但看起来很丑)。 有人看到这种用法有可疑之处吗?

在startApp函数中,我有以下代码行将click事件绑定到按钮:

$('#startActionButton').on('click', {name: 'this is really not need'}, someView.startAction);

我的startAction函数位于View类中,并定义为:

this.startAction = function(event){
    window.alert('Starting Action');
    console.log('Starting Action');
}

此代码在IOS模拟器和真实的IOS设备上都可以正常工作。 但是,每次都将代码部署到任何一个平台都非常耗时。 因此,我更喜欢在响应式桌面环境中进行开发,然后在每个开发周期结束时在模拟器或真实设备中进行详细的测试。

因此,当我在桌面环境中使用以下命令运行该应用程序时:

cordova serve

确实在控制台日志中看到了“ 启动操作” 但是,我没有收到警报。

这是我的问题。

  1. 有谁知道为什么会这样吗?
  2. 我调试了代码,并在警报功能行的startAction函数中放置了一个断点。 在调试器窗口中,我输入了以下内容,并得到如下响应:

window.alert是已定义的还是未定义的? WTH ??

尽管我可以确认window.alert存在并且具有正确的源代码,但不确定如何定义window.alert吗?

对我来说,这不是一个路障问题,因为我可以使用console.logs,但是我很好奇,为什么警报无法在桌面环境下工作。 Cordova代码中是否存在任何已知的错误? 我有什么想念的吗? 只是好奇。

任何见解将不胜感激。

PS:我想补充一下,然后问我是否也删除并重新安装了通知插件。 但这对案件没有帮助。

PS2:我使用的cordova版本是:

cordova -version
8.0.0

更新1我忘了添加,我也使用ratchet.css(不是js)进行格式化,尽管我认为这与它无关。

更新2 @Gandhi询问,我的index.html中包含cordova.js

更新4我重命名了自定义警报,如下所示:

  window.myalert = function (message) {
      navigator.notification.alert(
          message,    // message
          null,       // callback
          "My Awesome App", // title
          'OK'        // buttonName
      );
  };

现在,我可以确认常规JS警报起作用,而此自定义myalert仍然不能起作用。

OP的主要目的是在桌面环境中开发和测试应用程序,以便缩短周转时间。 一旦在桌面环境中测试了应用程序,就可以将其移植到iOS模拟器中进行进一步测试。

Cordova的“浏览器”平台是针对此要求量身定制的,有助于使用Chrome等浏览器测试应用。 您可以查看以下链接以获取有关浏览器平台的更多信息。 希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM