Backbone - IE10页面每次滚动到顶部

时间:2013-03-29 14:49:42

标签: javascript jquery internet-explorer backbone.js internet-explorer-9

我在页面内有这样的div

<div class="test">Click here</div>

及其上的事件

events: {
    'click .test': 'myFunc',
},

它打开对话框窗口,但在Internet Explorer v9和v10下,页面滚动到顶部。调试后我无法跟踪问题。

我还试图在点击时滚动到链接,这是代码:

var x = (window.pageXOffset !== undefined) ? window.pageXOffset : (document.documentElement || document.body).scrollLeft,
    y = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body).scrollTop;

这也行不通。 有什么想法吗?

更新

问题不在Backbone中,问题在于扩展jQuery焦点功能。请看一下:

var originalFocus = $.fn.focus;
$.fn.focus = function () {
    if (this.hasClass('no-scroll')) {
        var x = (window.pageXOffset !== undefined) ? window.pageXOffset : (document.documentElement || document.body).scrollLeft,
            y = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body).scrollTop;

        originalFocus.apply(this, arguments);
        window.scrollTo(x, y);

    } else {
        return originalFocus.apply(this, arguments);
    }
};

在其他浏览器中它工作得很好,但不是在IE中,似乎在应用IE后没有得到scrollTo ..

1 个答案:

答案 0 :(得分:0)

我认为这可能是一个比你期望的更简单的问题。如果你上面发布的代码就是一切,那么我可以指出一个问题。

在您的事件对象中,如果行后没有任何内容,则不能在行后面使用逗号。所以删除多余的逗号,

events: {
    'click .test': 'myFunc'
}

同样,你可能已经减去了代码,所以我的观点是无效的,但建议这些东西总是安全的!