【问题标题】:Javascript confirm dialog on Windows 8.1 Store AppWindows 8.1 Store App 上的 Javascript 确认对话框
【发布时间】:2016-06-01 04:44:51
【问题描述】:

我目前正在使用 html5、必应地图、javascript、phonegap 和 jquery 创建一个 Windows 8.1 应用商店应用程序。

我的应用中有一个按钮,单击该按钮会调用以下函数

function resetFields() {  
    var svar;  
    var tryk = confirm("Are you sure!");  
    if (tryk === true) {  
        svar = "You pressed OK!";  
    } else {  
        svar = "You pressed Cancel!";  
    }  
    alert(svar);  
}

函数调用正常,我看到了预期的确认对话框。但是,无论按下哪个按钮,结果都是一样的 - 对话框的响应就像按下了“取消”按钮一样。

我试过if (tryk === true)if (tryk == true) 但结果是一样的。

我错过了什么?

即使alert(confirm("Are you sure!")) 正在返回“未定义”,所以我认为我的答案比基本代码更深。

【问题讨论】:

  • alert(tryk) 给了你什么,似乎它除了返回布尔值之外还返回其他东西,或者由于某种原因总是返回 false。
  • alert(tryk) 给出'未定义'
  • 尝试在if else 块中输入一些日志语句,看看确认对话框是否真正响应yes/no 事件。
  • @Vivek Pradhan 感谢您的建议。似乎变量 tryk 没有填充确认对话框的结果 - 单击按钮不会创建布尔结果

标签: javascript jquery cordova windows-8.1


【解决方案1】:

我刚刚浏览了一些 PhoneGap 文档,因为它是围绕 html5 和带有 jquery 支持的 javascript 构建的,它往往会覆盖我们通常在浏览器中看到的某些元素,以利用本机设备元素,例如确认对话框。

来自Notification confirm api docs

函数 notification.confirm 显示一个比浏览器的确认函数更可定制的原生对话框。

现在,我认为变量tryk 未定义可能是因为在确认对话框上单击任何按钮后请求立即返回,这就是您无法正确利用处理函数的原因。

在 api 文档中,他们给出了一个简单的示例,如下所示:

 // process the confirmation dialog result
function onConfirm(button) {
    alert('You selected button ' + button);
}

// Show a custom confirmation dialog
//
function showConfirm() {
    navigator.notification.confirm(
    'You are the winner!',  // message
    onConfirm,              // callback to invoke with index of button pressed
    'Game Over',            // title
    'Restart,Exit'          // buttonLabels
    );
}

showConfirm() 方法可以从任何 html 元素触发,如下所示:

 <a href="#" onclick="showConfirm(); return false;">Show Confirm</a>

所以我认为你应该坚持他们官方提供的实现。我刚刚偶然发现另一个SO Question,它说PhoneGap confirm 实际上执行了一个异步回调。

【讨论】:

  • 谢谢 效果很好。另外,感谢您链接到原始帖子,以便我可以投票。
【解决方案2】:

试试这个

<html>
<head>
<script>

function Fields1(){
   var svar;
    var tryk = confirm("Are you sure!");
     if (tryk === true) {
        svar = "You pressed OK!";
      } else {
       svar = "You pressed Cancel!";
    }
   alert(svar);
}

</script>
</head>
<body>
<button onclick='Fields1()'>Hai</button>
</body>
</html>

【讨论】:

  • 我可以知道投票失败的原因吗?
  • 是的,你可以。这是一个错误。
  • 这和设置confirm的返回给一个变量并检查变量是一样的。并且由于某种原因,他变得未定义,因此无论哪种方式都会触发错误子句。
  • @JezD 但从逻辑上讲我看不到任何错误。有什么错误请告诉我..
  • @Kannan,我认为他的意思是投反对票是一个错误,这意味着他打算投赞成票。
猜你喜欢
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多