Php 使用哈希标记时,为没有JS的页面生成正确的内容。

Php 使用哈希标记时,为没有JS的页面生成正确的内容。,php,javascript,Php,Javascript,我的页面当前使用GET变量加载。当您到达页面时,GET变量将加载一组图像,从GET变量开始。然后浏览这些图像,如果启用了JS,则会更新哈希标记以反映当前图像。如果没有启用JS,则使用新的GET变量重新生成页面 问题是,如果有人启用了JS并移动到一个图像,然后他们希望将URL链接发送给未启用JS的朋友,那么朋友将收到错误的链接,因为GET变量将被使用(未更改),并且#将被忽略,因为PHP无法读取它 这方面的一个例子是在我的网站上使用此链接 www.martynazoltaszek.com/artp

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

问题是,如果有人启用了JS并移动到一个图像,然后他们希望将URL链接发送给未启用JS的朋友,那么朋友将收到错误的链接,因为GET变量将被使用(未更改),并且#将被忽略,因为PHP无法读取它

这方面的一个例子是在我的网站上使用此链接

www.martynazoltaszek.com/artpages?nid=27#Safe Place
启用JS后,您可以正确到达(基于#value)的安全位置,没有JS时,您可以错误到达(基于GET Variable)的#Dream)

一个显而易见的解决方案是使用GET变量而不是#,但这会产生页面刷新,我正试图避免这种情况

有什么解决办法吗


感谢您的关注。

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

您当前的url方案不太一致,可能会令人困惑,因为可能会在查询字符串和哈希中传递有关图像的矛盾信息


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

如果我理解正确,(如果不是您的情况,很抱歉),您需要一个链接,以便在单击时告诉您单击它的用户是否启用了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 
if(!isset($_GET['js']))
    echo 'Oops! You js is not enabled!';
else
    echo 'Okay your js is enabled.'; 
?>

要了解它是如何工作的,这是一个小php:

<a href="http://localhost/js_enabled/serverSide.php"
onclick="href='http://localhost/js_enabled/serverSide.php?js=1'">link</a>
<?PHP 
if(!isset($_GET['js']))
    echo 'Oops! You js is not enabled!';
else
    echo 'Okay your js is enabled.'; 
?>

Dupe?哼。谢谢你的信息。我不确定是否能够调整Web服务器以提供哈希。url方案不一致的原因是从一开始就支持非JS浏览器,如果人们在JS浏览器和非JS浏览器之间共享链接,则会有点混淆。看起来我真的有点卡住了,我的选项是刷新页面以更新每个图像上的Get变量,或者期望有一些断开的链接。