iScroll url哈希更改支持

时间:2012-11-27 17:34:38

标签: javascript iscroll

这是iScroll的一个已知问题,它似乎只发生在iOS5中,菜单完全停止工作。 iScroll中的所有子链接都是哈希锚点。有没有人有解决方法呢?

1 个答案:

答案 0 :(得分:2)

我处理它的方式是劫持锚链接本身并用scrollToElement调用替换它们。

// Hijack hash anchors and scroll to them
$('a').click ( function (e) {
    var id = $(this).attr('href');
    if (id.substr(0,1) == '#') {
        e.preventDefault();
        setTimeout( function() {
            scroller.scrollToElement ( id, 0 );
        }, 0);
        return false;
    } else {
        return true;
    }
});

此代码只应劫持以#开头的链接。然后它处理scrollToElement中的setTimeout,修复了其他一些间歇性错误。只要您的锚点使用id正确命名,它就能在我的结束时运行良好。如果您使用name属性而不是id属性,则需要重写这些属性。

此代码将复制name属性,如果它为空,则将它们放在id属性中。不过,你可能不会需要这个。

$('a').each (function (i, e) {
    var n = $(e).attr('name');
    var id = $(e).attr('id');
    if ( typeof id == 'undefined' || id === null || id === '') {
        $(e).attr('id', n);
    }
});