当使用Hash标签时,为没有JS的页面生成正确的内容

Generating the correct content for a page without JS when using Hash tag.

本文关键字:JS Hash 标签      更新时间:2023-09-26

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

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

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

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

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

安全的地方

梦想

一个明显的解决方案是使用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:

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