1

それは良い質問ではないかもしれませんが、ウェブサイト上のすべてのリンクを、ウェブページの更新からユーザーがAJAX経由でクリックしたURLの読み込みに変更することが、どういうわけか簡単かつ迅速に(おそらく1つの機能で)可能でしょうか?

私のウェブサイトにはどこにでも標準のリンクがありますが、iPhone用のモバイルアプリケーションが必要な場合は、どこでもAJAX(およびおそらくHTML5 History API)を使用する必要があります。リンクによってSafariブラウザが開くためです。

ブラウザウィンドウを更新せずに、すべてのリンクをすばやく変換して現在のソースコードを削除し、新しいページを読み込む方法はあると思いますか?それとも、リンクのすべてのセットに対して手動のコーディングと個別の機能が必要ですか?

例:

jQuery(document).on('a', 'click', function(){
// STEP1: AJAX call that will make PHP download page from link
// STEP2: Delete current source code and load new one (in this case including deletion of this function itself)
});

それは可能だと思いますか、それともここに落とし穴がありますか?

4

1 に答える 1

2

私はこれに似た何かをしました。可能ですが、サーバー側でいくつかの変更が必要になる場合があります。私の場合、いくつかのリンクがありhref = #、それらのいくつかにはクリックトリガーがあったので、それらを除外したかったのです。

この関数では、なしhref = #ですべてのリンクをチェックし、クリックイベントがない場合は、ajaxをバインドします。

bindAjaxLinks: function() {
   $('a[href!="#"]').each(function() {
            var eventObj = $(this).data('events');
            if (!eventObj || !eventObj.click) {
                // not a javascript link, do your thing
                var link = $(this).attr('href');
                if (link) {
                    $(this).click(function(event) {
                        event.preventDefault();
                        // do your ajax calling here.
                    });
                }
            }
    });

いくつかの考慮事項:私の場合、isAjaxこの関数で行ったすべてのリクエストのようなパラメーターを追加し、バックエンドではページ全体の一部のみを送信しました(ヘッドやその他のマークアップは含まれていません)。そして後で、ユーザーに表示されるものをこの新しいhtmlに置き換えました。

これにより問題が発生しました。サーバーがリダイレクトで応答した場合、ページ全体が取得されましたが、これは不要だったためisAjax、リダイレクト後にこのパラメーターが保持されるようにしました。これでこの問題は解決しました。

于 2013-01-01T20:22:29.557 に答える