如何根据读取cookie值使超链接指向不同的url

How to make a hyperlink point to different url based on a read cookie value?

本文关键字:url 超链接 何根 读取 cookie      更新时间:2023-09-26

场景

在我的网站上,我在每个页面的菜单(通常的"服务"、"关于我们"、"联系我们"菜单(上都有"contactus.html"页面的链接,每个页面都是使用dreamweaver模板创建的,菜单只能在.dwt模板文件本身中编辑。

当用户第一次访问"index.html"时,一个名为"客户端位置"的cookie与客户端的位置一起放置。

预期结果:

当客户端单击联系我们菜单项时,我想读取客户端位置cookie,并将用户发送到右侧的联系人页面,例如contactus2.htmlcontactus3.html.

我从下面链接中的stackoverflow答案中得到了这个。类似这样的东西会出现在script.js文件中

{
    document.getElementById("contactlink").onclick = function() {
    var clientlocation = readCookie(); // this returns contact1.html, a weblink
    document.getElementById("contactlink").href=clientlocation; 
}

可能的问题:

完全有可能的是,当用户第一次访问该网站时,他/她会直接进入"关于我们"部分,而cookie根本不会被放置来提及他们的位置。在这种情况下,我想转到contatus1.html,这是一个通用的联系我们页面。

如果javascript被禁用了,那么浏览器一点击就不会去任何地方了。

我在网上查了一下如何更改href<a>标签按钮点击javascript,但我想知道a( 会有任何可访问性问题b( 如果这是一个好的方法

您的"联系我们"页面肯定会有一个固定的位置吗?对我来说,这似乎是对饼干的不必要的使用。

example.com/ContactUs可以通过链接到../ContactUs等从example.com/stuff/About引用。

同样,您可以通过使用location.protocol + '//' + location.host(此处返回example.com(并附加必要的页面来提取文档根。

var clientlocation = location.protocol + '//' + location.host + '/ContactUs';
document.getElementById("contactlink").href=clientlocation;

如果javascript被禁用,那么您将无能为力。javascript将无法执行。此流可以由服务器端脚本独立于浏览器处理。

您不能将链接的href设置为contactus1.html吗?这样,如果禁用JS,链接仍然可以工作吗?至于未设置的cookie,您只需检查clientLocation是否为null(或为空或您的readCookie函数返回的任何内容(,如果是,则将href设置为contactus1.html.

解决这个问题的一种方法是使用PHP。

就像你说的,如果用户浏览器不支持JS,或者只是没有JS,它就不会工作,所以服务器端解决方案可能会更好。

例如:

<?php
function generateLink($location)
{
 switch($location)
 {
  case 0:
   echo '<a href="location1.html">Contact us</a>';
   break;
  case 1:
   echo '<a href="location2.html">Contact us</a>';
   break;
 }
}
?>