【问题标题】:Call function when alert message is fired触发警报消息时调用函数
【发布时间】:2014-12-23 01:03:29
【问题描述】:

我想知道在调用警报消息时触发了哪个 Dom 事件。我想在调用警报消息时调用 start_tracking 方法。我可以在页面调整大小时调用方法,但是我怎么知道在触发警报消息时调用了哪个方法。

win.addEventListener("click", function(event) {
      start_tracking ();
});

当我单击页面上的任何位置时,单击事件正在工作,但是当我单击警报消息内容时,它不会触发单击侦听器。 alert() 函数似乎没有被触发。

【问题讨论】:

  • alert 函数本身不会触发任何事件。
  • 所以当警报消息被触发时我应该怎么做然后我需要调用另一个方法@AnthonyForloney
  • 我的建议是使用比原生 alert 功能更直观和用户友好的东西,例如 jQuerys dialog 函数并挂钩。
  • @Anthony Forloney,我完全同意!
  • 更不用说alert() 会阻止其他脚本运行

标签: javascript jquery html addeventlistener


【解决方案1】:

您还可以覆盖本机警报功能...

function testAlert(){
    alert('Test Alert Warning... You clicked a button.');
} 
window.oldAlert = window.alert;
window.alert = function alert(msg){
    console.log(arguments.callee.caller.name + ' is the name of the calling function.'); // calling function...
    oldAlert(msg);
    oldAlert(arguments.callee.caller.name + ' is the name of the calling function.');
}
<button onclick="testAlert();">Warn!</button>
这将为您提供调用函数的名称......希望这会有所帮助。

【讨论】:

    【解决方案2】:

    无法捕获任何alert() 函数事件。我不知道您为什么要这样做,但我会创建另一个函数,而不是称为 warn()

    function warn(warning) {
    
      alert(warning);
      capturedAlert();
    
    }
    
    function capturedAlert() {
    
      alert('An alert was called.');
    
    }
    <button onclick="warn('This is a warning!')">Warn!</button>

    这样,每次调用warn(),你可以alert()用户,并调用另一个函数。

    【讨论】:

    • 您想要这样做是因为很难找到导致代码中出现烦人警报的代码部分。
    猜你喜欢
    • 1970-01-01
    • 2012-04-09
    • 2016-02-12
    • 2016-10-15
    • 2017-12-29
    • 1970-01-01
    • 2012-04-28
    • 2014-05-27
    • 1970-01-01
    相关资源
    最近更新 更多