由于我发现 angularjs 和 bootstrap 中的模态缓存很烦人,因此我发现这篇文章“ $modal caching ”将一种版本添加到模态的 url 中,这样可以避免缓存内容中的新变化模态的,但是由于我这样做时,当我单击按钮打开模态或模态内的任何控件时,我总是
Uncaught TypeError: Cannot read property 'toLowerCase' of undefined at ih.js:223
从第 223 行的 jquery-3.1.0 库中收到此脚本错误。
按钮打开编辑部(我的)
$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();"
效果很好的控件,但我开始污染模态控件中的所有控件。
有没有办法阻止所有内部控件从模态或代码中的传播以打开模态,或者我可以停止从 CSS 冒泡吗?
编辑
该错误是由于我最近安装的一些 chrome 扩展造成的。我卸载它们并重新启动浏览器,问题就消失了。