绑定点击事件到ie8 $window in angularjs
Binding click event to ie8 $window in angularjs
我最初在 ie8 中为 angularjs 绑定点击事件的方法是这样的:
var w = angular.element($window);
w.bind('click', function(){alert('hi')});
但这当然适用于除 ie8 以外的所有浏览器。所以我尝试了:
function bindEvent() {
if($window.addEventListener)
$window.addEventListener('click', alert('Hi'), false);
else
$window.attachEvent('onclick', alert('Hi ie8'));
}
这适用于所有浏览器,但方式很奇怪。页面加载后,我会立即收到警报,但是当我四处点击时,我看不到警报。所以警报只在页面加载时触发,但我清楚地说 'click' 或 'onclick' 如您所见。
我尝试了一些混合方法,例如将 bindEvent 函数粘贴到 $timout 中,甚至从函数定义中删除,只调用 angularjs 控制器中的 if-else 块。
甚至对 .bind 函数进行了创意,并添加了第三个参数作为 'false' 以防止事件冒泡。我不知道如何将点击事件绑定到 ie8 window 对象,所以每当我点击页面时它都会调用一个函数。求助!
这是因为您的警报会立即触发,请将其包装在一个函数中:
function bindEvent() {
if($window.addEventListener){
$window.addEventListener('click', function(){
alert('Hi')
}, false);
}
else{
$window.attachEvent('onclick', function(){
alert('Hi ie8')
});
}
}
我最初在 ie8 中为 angularjs 绑定点击事件的方法是这样的:
var w = angular.element($window);
w.bind('click', function(){alert('hi')});
但这当然适用于除 ie8 以外的所有浏览器。所以我尝试了:
function bindEvent() {
if($window.addEventListener)
$window.addEventListener('click', alert('Hi'), false);
else
$window.attachEvent('onclick', alert('Hi ie8'));
}
这适用于所有浏览器,但方式很奇怪。页面加载后,我会立即收到警报,但是当我四处点击时,我看不到警报。所以警报只在页面加载时触发,但我清楚地说 'click' 或 'onclick' 如您所见。
我尝试了一些混合方法,例如将 bindEvent 函数粘贴到 $timout 中,甚至从函数定义中删除,只调用 angularjs 控制器中的 if-else 块。
甚至对 .bind 函数进行了创意,并添加了第三个参数作为 'false' 以防止事件冒泡。我不知道如何将点击事件绑定到 ie8 window 对象,所以每当我点击页面时它都会调用一个函数。求助!
这是因为您的警报会立即触发,请将其包装在一个函数中:
function bindEvent() {
if($window.addEventListener){
$window.addEventListener('click', function(){
alert('Hi')
}, false);
}
else{
$window.attachEvent('onclick', function(){
alert('Hi ie8')
});
}
}