2011-09-18 48 views
1

我的页面运行在php上,没有js用户。对于使用javascript的用户,我加载索引中的所有内容并结合hashchangevent。所以这些链接全部看起来像www.page.com/#page.php,之前有一个#。如果用户以这种方式键入,每件事情都像魅力和内容被加载索引.php如何使用Javascript或jQuery从“page.php”重定向到“#page.php”?

但是,如果用户将进入www.page.com/page.php页面当然结束了PHP页面和动态页面当然不会工作,除非用户将点击索引页面并继续导航。所以这不是一个很酷的方式。

我的问题:

我怎样才能从重定向用户:

www.page.com/page.php

WWW。 page.com/#page.php

当他们在浏览器中输入www.page.com/page.php时

当然只能用javascript。页面应该在没有javascript的情况下正常使用php。

谢谢。

+0

如果启用了JavaScript的用户想要与未启用JavaScript的朋友分享他们正在浏览的页面,该怎么办? – icktoofay

回答

0

当页面加载时,通过解构和重新组装URI将window.location更改为所需的URL。不幸的是,你必须在每一个你想要重定向的网页上(即page.php)都包含它。

$(document).ready(function() { 
    // Insert the pathname after the hash, but skip the leading '`' 
    window.location = "/#" + document.location.pathname.slice(1); 
}); 

这是略少干净,但你也可以从.ready()完全删除window.location位。这会影响性能的小幅提升。

如果您希望散列重定向仅影响当前路径的最后一个元素,请改为使用下面的代码。

window.location = "./#" + document.location.pathname.split('/').pop(); 
+0

非常酷!谢谢!但是如果我的网址更长,那么怎么办? www.page.com/folder/page.php - 甚至更多文件夹。我需要改变什么?因为这会将#移到www.page.de/#folder/page.php。 – Melros

+0

什么都没有。 Location.pathname属性捕获域名后面和查询字符串前面的所有内容。 – cheeken

+0

是的,这就是为什么www.page.com/folder/#page.php不起作用? – Melros

相关问题