好的,我分析了 jquery.pjax.js 和 Instantclick 这两个库,它们非常耦合以尝试集成它们。
所以一个困难的解决方案是将一个库的功能集成到另一个库中,但不幸的是我没有足够的知识。
我可以提出的是基于先前解决方案的 hack。
主要思想是在鼠标悬停时触发点击事件,但容器是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,那就太好了。
除此之外,为鼠标悬停创建缓存可能会很好,因此即使用户试图强调界面,您也不会一直进行相同的调用。