ライブラリjquery.pjax.jsとInstantclickの両方を分析しましたが、それらを統合しようとすると、結合が強すぎます。
難しい解決策の 1 つは、あるライブラリの機能を別のライブラリに統合することですが、残念ながら私にはそのための十分な知識がありません。
私が提案できるのは、以前のソリューションに基づくハックです。
主なアイデアは、マウスオーバーでクリックイベントをトリガーすることですが、コンテナーはdisplay:none
. クリックよりもコンテンツを から#hidden-container
に移動します#container
。
html コードは次のようになります。
<div id="container"></div>
<div style="display:none" id="hidden-conainer"></div>
代わりに、js は次のようになります。
$(document).ready(function(){
if ($.support.pjax) {
$('a').on('mouseover', function(event) {
// clean idden-conainer
$('#hidden-conainer').empty();
var container = $('#hidden-conainer');
$.pjax.click(event, {container: container});
}).on('click', function(event) {
event.preventDefault();
$('#container').html($('#hidden-conainer').html());
});
}
});
これらの理由により、私の観点からは解決策は間違いなく不完全です。
- Instantclick は、タッチでモバイルでも処理します。このソリューションはありません
- 多くのリンクが閉じられていて、ユーザーが上部をクリックせずに「遊んでいる」だけの場合、jsはクリーンアップを続け、適切なコンテンツを必要としますが、バーではアドレスが変化し続けることがわかります
それらの問題でさえ、あなたが速い感覚を達成したいのであれば、それは「十分に良い」かもしれません. 実際、ユーザーがリンクに直接アクセスしてクリックした場合、UX は優れています。
それに加えて、おそらくマウスオーバー用のキャッシュを作成するとよいでしょう。そうすれば、ユーザーがインターフェイスにストレスをかけようとしても、常に同じ呼び出しを行うことはありません。