2011-09-21 27 views
0

我的页面当前使用GET变量加载。当你到达页面时,GET可以加载一组图像,从GET变量开始。然后浏览这些图像,如果启用了JS,则会更新Hash标记以反映当前图像。如果你没有启用JS,那么该页面将重新生成一个新的GET变量。使用哈希标记时为没有JS的页面生成正确的内容。

问题是,如果某人有JS启用并移动到一个图像,然后他们想要发送URL链接给没有启用JS的朋友,朋友将收到不正确的链接,因为GET变量将(没有改变),#将被忽略,因为PHP无法读取它。

这样的一个例子是我的网站上使用这个链接

www.martynazoltaszek.com/artpages?nid=27#Safe Place 

与JS启用您正确到达(在安全的地方(基于#VALUE)),没有JS你到达错误(在#Dream(基于GET变量))

Safe Place

Dream

一个显而易见的解决方案是使用GET变量插件tead的#但这会产生一个页面刷新,我试图避免。

这里的解决方案的任何想法?

并感谢您的期待。

+0

杜佩? http://stackoverflow.com/questions/4973777/how-does-github-change-the-url-but-not-the-reload –

回答

1

这个问题没有标准的解决方案,这就是为什么许多网站放置在资源旁边的永久链接框作为一种方式来公开一个可以在所有浏览器上工作的散列链接。

您当前的网址方案不是非常一致,可能会令人困惑,因为它可能会传递关于图像在查询字符串和哈希中的矛盾信息。

有办法解决你的问题,但它们不是标准的。例如,某些浏览器支持在不重新加载页面的情况下修改URL。另一个非标准选项是允许您的Web服务器在其请求变量中公开哈希标签。这不是传统的,但它可以让你的PHP代码读取散列。

+0

humm。谢谢(你的)信息。不知道我能够调整Web服务器来提供哈希。url方案不一致的原因是从一开始就支持非JS浏览器,如果人们共享js和非js浏览器之间的链接,它会有点混乱。 所以看起来像我有点卡住真的,我的选项刷新页面更新每个图像上的获取变量,或期望有一些断开的链接。 – Purplemonkey

0

如果我理解正确(对不起,如果这不是你的情况),你想要一个链接,当点击告诉你是否点击它的用户启用了js。

我认为这是微不足道的,你所要做的就是让php知道如果链接是从浏览器中点击了js启用或不是,然后php会采取类似的行动。我会做这样的:

分享这种链接:

<a href="http://localhost/js_enabled/serverSide.php" 
onclick="href='http://localhost/js_enabled/serverSide.php?js=1'">link</a> 

要看看它是如何工作的,这是一个小的PHP:

<?PHP 
if(!isset($_GET['js'])) 
    echo 'Oops! You js is not enabled!'; 
else 
    echo 'Okay your js is enabled.'; 
?>