如何在模态中的所有控件中停止传播

时间:2017-07-22 22:00:10

标签: javascript jquery angularjs event-bubbling jquery-3

由于我发现在angularjs和bootstrap中缓存模式的烦恼,我发现这篇文章“$modal caching”将一种版本添加到模态的url中,以此方式避免缓存新的更改在模态的内容,但自从我这样做,当我点击按钮打开模态或模态内的任何控件我总是得到这个脚本错误 来自第223行的jquery-3.1.0库的Uncaught TypeError: Cannot read property 'toLowerCase' of undefined at ih.js:223

按钮以打开编辑部门(我的)

    $scope.editDepartment = function(id){
        var uibModalInstance = $uibModal.open({
            templateUrl : '../webproject/modal_department.html?bust=' + Math.random().toString(36).slice(2),
            controller : 'DepartmentModalController',
            scope: $scope
        });
        return uibModalInstance.result.then(function(department){ 
            $scope.department = department;
        });
    }

jQuery库中的jQuery方法产生错误

Messaging.prototype.addEventListener = function() {
  var func,
    _this = this;
  func = function(evt) {
    return _this.receiveMessage(evt);
  };
  if (this.window.addEventListener) {
    this.window.addEventListener("click", function(event) {

      var target = event.target;

      while (target && target.tagName.toLowerCase() !== 'a') {
        target = target.parentNode;
        if (!target) { return; }
      }

      var url = target.href;
      if(url.indexOf('afsrc=')>-1||url.indexOf('jdoqocy.com')>-1||url.indexOf('kqzyfj.com')>-1||url.indexOf('tkqlhce.com')>-1||url.indexOf('anrdoezrs.net')>-1||url.indexOf('dpbolvw.net')>-1) {
          chrome.extension.sendRequest({action:"suppressToolbar"});
      }

    });
    return this.window.addEventListener("message", func, false);
  } else if (this.window.attachEvent) {
    return this.window.attachEvent("onmessage", func);
  }
};

我调试了代码,从我点击按钮打开模态的那一刻起,我在模态中的保存按钮,或任何其他控件,如简单的复选框或单选按钮,它从Jquery转到此代码while (target && target.tagName.toLowerCase() !== 'a')我认为(如果我错了,请纠正我)冒泡正在发生。它开始评估包含控件的所有HTML元素,直到到达没有属性tagName的元素#document并生成错误。

我开始在所有控件上放置onclick="event.stopPropagation();"哪个效果很好但我开始污染modal的所有控件。

有没有办法在模态或代码中停止传播所有内部控件以打开模态,还是可以阻止CSS冒泡?

修改

错误是由于我最近安装的一些Chrome扩展程序造成的。我卸载它们并重新启动浏览器,问题就消失了。

1 个答案:

答案 0 :(得分:0)

使用更加肯定的答案扩展您的编辑。

是的,这是导致该问题的Chrome扩展程序:InvisibleHand。

如果你查看ih.js个文件,你会在任何地方看到引用invisiblehand