导航到新url时,Javascript在Safari中不起作用

Javascript not working in Safari when navigating to a new url

本文关键字:Safari 不起作用 Javascript url 导航      更新时间:2023-09-26

当进行账单支付时,我会显示一个静态引导弹出窗口,告诉用户等待。用户单击一个调用js函数的按钮来显示弹出窗口,然后将用户重定向到在服务器端运行计费的url。它适用于除Safari之外的所有浏览器。当我点击Safari中的按钮时,弹出窗口不会出现,它只是导航到计费页面。我注意到如果我删除导航行(location.replace('/billingpage/pay/');)弹出窗口将在safari中正确显示。如果javascript中有导航,safari似乎不会显示弹出窗口。

我还尝试将导航放在另一个函数中,并在超时后调用它,如下所示:window.setTimeout(navigation(),1000);但这也没有奏效。

function pay_now() {
  document.getElementById("paynow_btn").disabled=true;
  document.getElementById("paynow_btn").style.opacity = 0.25;
  var wait_title = "Please wait while the transaction is processed...";
  var wait_message = "<br/><br/><br/><br/> ";
  document.getElementById("staticModalLabel").innerHTML = wait_title;
  document.getElementById("staticModalBody").innerHTML = wait_message;
  var spinner = new Spinner().spin();
  document.getElementById("staticModalBody").appendChild(spinner.el);
  $('#staticPopupModal').modal({
    backdrop: 'static',
    keyboard: false
  });
  location.replace('/billingpage/pay/');
}
 <a href="javascript:pay_now();" id="paynow_btn" class="btn btn-green">PAY</a>

这难道不是每个javascript进程的预期行为吗?无论如何,在你的情况下,我肯定会推迟使用jquery并承诺。这是我用jqueryui制作模式对话框的小提琴。

基本上它在代码中是这样的。

var dfd = $.Deferred();
$("#dialog-confirm").dialog({
    resizable: false,
    height: 140,
    modal: true,
    buttons: {
        "go to billing page": function () {
            $(this).dialog("close");
            dfd.resolve();
        },
        Cancel: function () {
            $(this).dialog("close");
            dfd.reject();
        }
    }
});
$.when(dfd).then(
function () {
    alert('go to billing page');
},
function () {
    alert('nope');
});