3

これを見たことがない、または想像できなかった。私の URL は次のようになります。

 www.site.com/root/path1/path2/123/some-path-1/page.1.2.html

ある時点で URL をハッシュで更新して、動的なユーザー インタラクションが URL アドレスを反映して友人にリンクを送信するようにします。

 window.location.hash = 'key=SomeValue';

SomeValue にドットが含まれている場合を除いて、ほぼすべての場合で完璧に機能します。

 window.location.hash = 'key=SomeValueA.B.';

上記の URL は次のようになります。

 www.site.com/root/path1/path2/123/some-path-1/key=SomeValueA.B.

www.site.com/root/path1/path2/123/some-path-1/page.1.2.html#key=SomeValueA.B の代わりに。

ここで何が問題なのか想像できず、jsfiddle で再現できません。これにはカスタム作成のハッシュ マネージャー クラスを使用します。

var hashUrlManager = function(){
 var getHash = function(){       
    return (window.location.hash) ? window.location.hash.substring(1) : "";
 };
 return{
    getHash : getHash,
    getParam : function(k){
        return Util.getParameter(k,"?"+getHash());
    },
    setParam : function(k,v){
        var h = getHash();
        var vNow = hashUrlManager.getParam(k);
        if(vNow==""){
            if(window.location.href.indexOf("#")==-1){
                window.location.hash = k+"="+v;
            }else{
                window.location.hash = h+((h=="")?"":"&")+k+"="+v;
            }
        }else if(vNow!==v){
            window.location.hash = window.location.hash.replace(k+"="+vNow,k+"="+v);                
        }
    },
    removeParam : function(k){
        var v = hashUrlManager.getParam(k);
        var s = k+"="+v;
        if(window.location.hash.indexOf("&"+s)!=-1)s="&"+s;
        window.location.hash = window.location.hash.replace(s,"");
    }
 };
}();

hashUrlManager.setParam('key','SomeValueA.B.');

注: それが重要な場合は History.js を使用し、ページでは jQuery を使用します。

4

1 に答える 1

1

私は同じ問題に遭遇しました。http://jsbin.com/aMUdejA/1/edit?html,outputで正常に再現しました。これは、jQuery (1.x と 2.x の両方のバージョン) と History.js の共存です。

問題を提出しましたhttps://github.com/browserstate/history.js/issues/363

于 2013-11-24T03:21:06.260 に答える