Javascript iScroll url哈希更改支持

Javascript iScroll url哈希更改支持,javascript,iscroll,Javascript,Iscroll,这是iScroll的一个已知问题,似乎只有在iOS5中菜单完全停止工作时才会发生。我在iScroll中的所有子链接都是散列锚。有人对此有解决办法吗?我的处理方法是劫持锚链接本身,并用scrollToElement调用替换它们 // Hijack hash anchors and scroll to them $('a').click ( function (e) { var id = $(this).attr('href'); if (id.substr(0,1) == '#')

这是iScroll的一个已知问题,似乎只有在iOS5中菜单完全停止工作时才会发生。我在iScroll中的所有子链接都是散列锚。有人对此有解决办法吗?

我的处理方法是劫持锚链接本身,并用
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;
    }
});
此代码应仅劫持以
#
开头的链接。然后,它在
setTimeout
中处理
scrollToElement
,修复其他一些间歇性错误。只要你的锚正确地用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);
    }
});