【问题标题】:Binding click event to ie8 $window in angularjs在angularjs中将点击事件绑定到ie8 $window
【发布时间】:2015-01-29 01:54:49
【问题描述】:

我最初在 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')); 
    }

这适用于所有浏览器,但方式很奇怪。页面加载后,我会收到警报,但是当我单击周围时,我看不到警报。所以警报只在页面加载时触发,但我清楚地说是“点击”或“点击”,如您所见。

我尝试了一些混合方法,例如将 bindEvent 函数粘贴到 $timout 中,甚至从函数定义中删除,然后在 angularjs 控制器中调用 if-else 块。

甚至对 .bind 函数进行了创意,并添加了第三个参数为“false”以防止事件冒泡。我不知道如何将点击事件绑定到 ie8 窗口对象,所以每当我点击页面时,它都会调用一个函数。救命!

【问题讨论】:

    标签: angularjs internet-explorer-8 onclick


    【解决方案1】:

    这是因为您的警报立即被触发,请将其包装在一个函数中:

    function bindEvent() {
        if($window.addEventListener){
            $window.addEventListener('click', function(){
                alert('Hi')
            }, false);
        }
        else{
            $window.attachEvent('onclick', function(){
                alert('Hi ie8')
            }); 
        }
    }
    

    【讨论】:

    • 你也可以绑定参数:$window.addEventListener('click', alert.bind(this, 'Hi'), false);
    猜你喜欢
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 2011-05-18
    • 2012-03-10
    • 1970-01-01
    • 2013-06-21
    • 2015-01-29
    • 1970-01-01
    相关资源
    最近更新 更多