如何为特定功能禁用window.alert并重新启用它?

时间:2017-03-09 07:01:36

标签: javascript jquery

我使用jquery触发更改事件,

var year = jQuery("#cq-year option:eq(2)").val();
jQuery("#cq-year").val(year).trigger('change');

但它在警告“缺少GetModels所需参数时显示错误。”  我在jQuery(window).load上禁用了警报,但我只想禁用这些特定警报的警报。

window.alert = function() { };

那么如何重新启用此功能呢?

3 个答案:

答案 0 :(得分:2)

window.alert功能保存在临时变量中,并在完成后重新分配。



var temp = window.alert;
window.alert = function() { };
alert('this is not shown');
window.alert = temp;
alert('this is shown');




答案 1 :(得分:0)

这个解决方案怎么样?

// Flag for alert
var canAlert = false;

// Backup the alert method
var alertBackup = window.alert

// Over ride alert method
window.alert = function(msg){
    // Check if flag is enabled before alerting
    if(canAlert){
        alertBackup(msg)
    }
}

在您希望警报生效时生成canAlert = true

答案 2 :(得分:0)

您可以使用效用函数callNoAlert



function callNoAlert (fn) {
  var a = alert
  window.alert = Function.prototype
  fn()
  window.alert = a
}

callNoAlert(function () {
  alert("ANNOYING ALERT!") // does not run!
  console.log("alert() didn't run!")
})

callNoAlert(function () {
  var year = jQuery("#cq-year option:eq(2)").val();
  jQuery("#cq-year").val(year).trigger('change');
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;