绑定点击事件到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')
        }); 
    }
}