Javascript 更改窗口后的Safari模糊事件循环

Javascript 更改窗口后的Safari模糊事件循环,javascript,jquery,safari,Javascript,Jquery,Safari,我想用警报框对模糊事件做出反应。其目的是验证内容,并在值无效时提供反馈。我没有使用警报框进行调试,我的客户坚持使用警报框给用户反馈。 我在这里有一个类似的问题:(但这个问题不是多余的!) 因此我当前的解决方案看起来是这样的 HTML: 到目前为止,这是可行的,但是 问题是:如果打开站点,请单击输入字段,然后更改窗口。例如,打开一个文本编辑器,然后更改回。Safari卡在事件循环中(回调被一次又一次地调用).只需删除这一行: alert("Blur event got triggered.");

我想用警报框对模糊事件做出反应。其目的是验证内容,并在值无效时提供反馈。我没有使用警报框进行调试,我的客户坚持使用警报框给用户反馈。 我在这里有一个类似的问题:(但这个问题不是多余的!)

因此我当前的解决方案看起来是这样的

HTML:

到目前为止,这是可行的,但是 问题是:如果打开站点,请单击输入字段,然后更改窗口。例如,打开一个文本编辑器,然后更改回。Safari卡在事件循环中(回调被一次又一次地调用).

只需删除这一行:

alert("Blur event got triggered.");
Alert()不应用于任何模糊事件回调函数

更新


我能够添加警报。safari在旧窗口上时为新窗口调用“激活”。添加“超时”以输入正确的时间范围。在第一次警报出现之前设置警报条件并更改相关变量可防止警报循环

例如:

safari.application.addEventListener("activate", function(){
  //setTimeout prevents boundary complications
  setTimeout(
  function() {
    if (enabled) {
      var tab = safari.application.activeBrowserWindow.activeTab;
      if (curTab != tab) {
        curTab = tab;
        if (selectedTab != tab)
        alert('This is an alert!!');

      }
    }
  }
  ,1000);
},true);

听起来像是个人意见。有可靠的消息来源吗?是的,当然有。但是,正如我前面提到的,我的客户机坚持使用alert()。但是,正如我之前提到的,“你在编辑你的文章之前没有提到它,是吗?”?这是一种狩猎行为。我认为,除非在目标元素上解除绑定/重新绑定模糊事件,否则无法处理它。究竟为什么客户会要求它?我不明白。请参阅我的更新答案,应该可以在Safari上使用。A从一开始就提到了这一点。邀请您查看编辑历史记录;)它起作用了!谢谢你。是的,我知道。我的委托人要这个是因为他已经习惯了。没有关系。谢谢你的帮助。从一开始就提到了这一点。所以我向你道歉
alert("Blur event got triggered.");
var doFocus = function () {
  $("#test").focus();
    console.log("do focus");
};

var bluring = function(sender){
    $(sender).off('blur');
    console.log("Blur event got triggered.");
    alert("Blur event got triggered.");
    window.setTimeout(function () {
      doFocus();
      $(sender).on('blur',function(){bluring(this)});
    }, 1);
};

$("#test").blur(function(){bluring(this)});
safari.application.addEventListener("activate", function(){
  //setTimeout prevents boundary complications
  setTimeout(
  function() {
    if (enabled) {
      var tab = safari.application.activeBrowserWindow.activeTab;
      if (curTab != tab) {
        curTab = tab;
        if (selectedTab != tab)
        alert('This is an alert!!');

      }
    }
  }
  ,1000);
},true);