我的网站有很多页面:
例如:
HOME:
http://mywebsite.com/index.html
某些页面:
http://mywebsite.com/categorie/somepage.html
我决定使用AJAX动态加载我的页面而不重新加载页面。所以我决定使用 jQuery Address 插件(http://www.asual.com/jquery/address/docs/)以允许深层链接和后向导航:
<script type="text/javascript" src="uploads/scripts/jquery.address-1.2rc.min.js"></script>
<script type="text/javascript">
$('a').address(function() {
return $(this).attr('href').replace(/^#/, '');
});
</script>
现在,在安装插件后,如果我继续http://mywebsite.com/index.html
(HOME)并单击 SOME PAGE 链接,jquery会成功加载{{1没有重新加载页面,我的浏览器上的地址栏显示:
http://mywebsite.com/categorie/somepage.html
这太棒了!
然而,问题是:如果我复制此动态生成的网址:http://mywebsite.com/index.html/#/categorie/somepage.html
进入Web浏览器地址栏,它将进入我的网站 index.html 页面而不是“SOME PAGE”页面。此外,前进/后退按钮无法正常工作,它们只替换URL栏中的地址,但内容保持不变。
我想我需要编写一些将动态网址与正确的网页相关联的JavaScript规则?
一些帮助将不胜感激。谢谢:))
答案 0 :(得分:2)
将粘贴网址复制到地址栏正常工作 后退/下一步按钮也正常工作。
#应该在那里使其正常工作
任何人都知道如何使#!所以它可以通过谷歌索引吗?
或#/ 是一回事?
基本上我在wordpress上的工作:
// ajax setup
$.ajaxSetup({cache:false, success: function() {
// optional action here
}});
// Event handlers
$.address.init(function(event) {
$('#nav li a').address(function() {
return $(this).attr('href').replace(location.pathname, '');
});
}).bind('externalChange', {}, function(event) {
var post_id; // get page id
var nav_id; // get nav class
// for back button
switch (true) {
case (event.value == undefined):
post_id = 2; nav_id = 'home'; break;
case (event.value == "/about"):
post_id = 19; nav_id = 'about'; break;
case (event.value == "/product"):
post_id = 26; nav_id = 'product'; break;
...etc....
default: post_id = 2; nav_id = 'home';
}
// content loader on back/next button
$("#content-wrap").load("http://www.somesite.com/home/",{id:post_id}); // load content
});
// content loader by #nav
$(document).on("click","#nav li a",function(e){
var post_id = $(this).attr("id"); // get page id
$("#content-wrap").load("http://www.somesite.com/home/",{id:post_id}); // load content
return false; // keep url, no refresh
});
答案 1 :(得分:1)
这样的事情:
$(function () {
var path = location.hash.substring(1); // remove '#'
if (path) {
$.address.value(path);
}
});
<强>更新强>
如果您手动加载页面(例如在链接点击时)而不是使用地址事件处理程序(例如$.address.change(function () { ... })
),则将$.address.value(path);
上面的path
替换为页面的Ajax调用{ {1}}:
$(function () {
var path = location.hash.substring(1); // remove '#'
if (path) {
// get page at path
}
});
答案 2 :(得分:1)
您可以通过添加以下内容将其设为Google(#!)的可编入索引: $ .address.crawlable(真); 这是我发现有助于jQuery Address方法的链接: http://www.asual.com/jquery/address/docs/