1

设想

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

当用户第一次访问“index.html”时,一个名为“client-location”的 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 被禁用,那么浏览器在点击时甚至不会去任何地方。

我在网上阅读并检查了这个 如何通过javascript更改按钮点击时<a>标签的href,但我想知道a)是否会有任何可访问性问题b)这是否是一个好方法

4

4 回答 4

2

您的“联系我们”页面肯定有固定位置吗?对我来说,这似乎是对 cookie 的不必要使用。

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

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

var clientlocation = location.protocol + '//' + location.host + '/ContactUs';
document.getElementById("contactlink").href=clientlocation;
于 2013-03-15T14:08:01.973 回答
0

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

于 2013-03-15T14:12:49.860 回答
0

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

于 2013-03-15T14:12:56.693 回答
0

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

就像你说的,如果用户的浏览器不支持 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;
 }
}

?>
于 2013-03-15T14:13:19.483 回答