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

时间:2013-03-15 14:03:10

标签: javascript html

方案

在我的网站上,我在每个页面的菜单(通常的服务,关于我们,联系我们菜单)上都有“contactus.html”页面的链接,每个页面都是使用Dreamweaver模板制作的,菜单只能在.dwt模板文件本身。

当用户第一次访问“index.html”时,会将一个名为“client-location”的cookie与客户端的位置放在一起。

期望的结果:

当客户点击与我们联系菜单项时,我想阅读客户位置 Cookie并将用户发送到正确的联系页面,例如 contactus2.html 或 的 contactus3.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被禁用,那么浏览器甚至不会在任何地方点击。

我在线阅读并检查了这一点  How to change href of <a> tag on button click through javascript也是,但我想知道是否 a)将存在任何可访问性问题 b)如果这是一个好方法

4 个答案:

答案 0 :(得分:2)

当然,您的“联系我们”页面会有固定的位置吗?对我来说,这似乎是一种不必要的cookie用途。

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

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

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

答案 1 :(得分:0)

如果禁用了javascript,则无法执行任何操作。 Javascript将无法执行。 可以通过服务器端脚本独立于浏览器处理此流程。

答案 2 :(得分:0)

你不能把链接的href设置为contactus1.html,这样如果JS被禁用,链接仍然可以工作吗?至于没有设置的cookie,你可以检查clientLocation是否为null(或者是空白或readCookie函数返回的任何内容),如果是,则将href设置为contactus1.html。

答案 3 :(得分:0)

解决这个问题的一种方法是使用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;
 }
}

?>