0

動的コンテンツのあるサイトで作業しています。

記事をクリックすると、プッシュ状態を使用してアドレスに変更されます。

例:

http://www.some-site.com/news/-ニュースアイテムをクリックする前に

http://www.some-site.com/news/dynamic-url/-ニュースアイテムをクリックした後

ただし、pushstateはIEまたは古いブラウザーでは機能しないため、jQuery.addressを使用するように書き直して、IEのみの代わりにURLのハッシュを変更します。

ここでの問題は、誰かがChromeからコピーした友人にサイトへのリンクを送信し、友人がIEを使用している場合、そのURLに新しいhasを追加し始めるということです。

例:

http://www.some-site.com/news/dynamic-url/-友達に送信されたURL

http://www.some-site.com/news/dynamic-url/#!/dynamic-url-友人がサイトにアクセスした後のURL

だから、私はそれらを書き換え/リダイレクトする方法に固執しています。として、ハッシュがApacheに送信されることはありません。私はツイッターで見ました、彼らは私が望むことを正確に行います、しかし私はその方法を理解することができません。

https://twitter.com/#!/googleはhttps://twitter.com/googleにリダイレクトされ、IEで機能します。

どんな助けでも大歓迎です、そしてあなたが理解しないならば、私に詳しく説明するように頼んでください。

David Thomasが提案したように、ここに関数があります。

var permalink = function(title, id, permalink){
    var current = siteUrl + type + (order ? '/orderBy/' + order : '');
    var newUrl = current + '/' + permalink + '/';
    if(jQuery.browser.msie){
        newUrl = '/' + permalink + '/';
        jQuery.address.value(newUrl);
    }
    else{
        stateNum++;
        window.history.pushState({state: stateNum}, title, newUrl);
    }
    jQuery('title').html('SITE - ' + title);
}
4

2 に答える 2

0

プラグイン(jquery履歴など)を使用するか、自分でイベントを作成してハッシュの変更を確認する必要があります。次に、ハッシュを読み取り(「!」を削除します)、必要に応じてハッシュを処理します。それを使ってajaxを実行し(ドメイン/ハッシュをロードするなど)、コンテンツをページのどこかに配置することをお勧めします。

それは明らかですか?

于 2012-09-25T12:10:25.113 に答える
0

しばらく考えた後、私は1つの解決策しか見つけられませんでした。

誰かが同じような状況にある場合に備えて、ここに投稿します。

私の解決策は、少しハッキーでした。ブラウザが IE で、ある時点以降に url の断片があれば、それをニュース項目の名前としてカウントします。名前を取得したら、適切な URL にリダイレクトします。

var permalink = function(title, id, permalink){
    var current = siteUrl + type + (order ? '/orderBy/' + order : '');
    var newUrl = '/' + permalink + '/';
    if(jQuery.browser.msie){
        jQuery.address.value(newUrl);
    }
    else{
        current = siteUrl + type + (order ? '/orderBy/' + order : '');
        newUrl = current + '/' + permalink + '/';
        stateNum++;
        window.history.pushState({state: stateNum}, title, newUrl);
    }
    jQuery('title').html('SITE - ' + title);
}
jQuery(document).ready(function(){
    jQuery.address.crawlable(true);
    if(jQuery.browser.msie){
        if(jQuery.address.value() == '/'){
            var currentPermalink = window.location.toString();
            currentPermalink = currentPermalink.split(type);
            if(currentPermalink[1] !== '/'){
                window.location = siteUrl + type + '/#!' + currentPermalink[1];
                jQuery.address.value(newUrl);
            }
        }
    }
});
于 2012-09-26T12:42:22.870 に答える