方案
在我的网站上,我在每个页面的菜单(通常的服务,关于我们,联系我们菜单)上都有“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)如果这是一个好方法
答案 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;
}
}
?>