0

我在页面中有这样的 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 后无法滚动到 ..

4

1 回答 1

0

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

在您的事件对象中,如果一行后面没有任何内容,则不能在一行后面加上逗号。所以去掉多余的逗号,

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

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

于 2013-03-29T15:25:51.817 回答