0

私は History.js を使用しており、Google Plus の URL として URL を取得しようとしています。

(function(window, undefined){


var History = window.History; // Note: We are using a capital H instead of a lower h
if ( !History.enabled ) {
     // History.js is disabled for this browser.
     // This is because we can optionally choose to support HTML4 browsers or not.
    return false;
}


History.Adapter.bind(window, 'statechange', function(){ // Note: We are using statechange instead of popstate

    var State = History.getState(); // Note: We are using History.getState() instead of event.state
    History.log(State.data, State.title, State.url);
    console.log(State.data.page);
});



$('.item').live('click', function(e){
    e.preventDefault();
    var url = $(this).children(1).attr('href');
    $(document).remove('#content');
    $('#loaded').load('/controlpanel' + url + '.php #content');
    History.pushState({page: url + '.php'}, "Prova Pagina", History.getRootUrl() + 'controlpanel' + url); // logs {state:1}, "State 1", "?state=1"
});

})(窓);

このスクリプトは、リンクをクリックすると機能しますが、ページを手動で更新すると、既にリンクをクリックしていて、URL がhttp://www.mysite.com/something/pageになると、ブラウザーは私に404 エラー。どうすれば解決できますか?

次のようなものを取得したい: https://plus.google.com/explore

4

1 に答える 1

0

JS ではページ全体をリロードすることはできませんが、サーバー側で URL にアクセスできる必要があります。これにより、リンクに直接アクセスする人が何かを見ることができます (グレースフル デグラデーションは言うまでもありません)。

また、アンカー リンクにクリック ハンドラーを追加する必要があります。これにより、既定のアクション (リンクに移動する) を防止し、pushStateメソッドを使用して URL を変更できます。このようなもの:

document.body.onclick = function( e ) {
    var evt = e || window.event,
        target = evt.target || evt.srcElement // Get the target cross-browser

    // If the element clicked is a link
    if ( target.nodeName === 'A' ) {

        // Use the History API to change the URL
        History.pushState() // Use the library correctly

        // Don't forget to return false so that the link doesn't make you reload the page
        return false
    }
}

これは間違いなく製品コードではありません (外部リンクを確認する必要があり、本文にバインドしないなど)、アイデアは得られます。

于 2012-04-20T12:09:29.307 に答える