簡體   English   中英

如何基於讀取的cookie值使超鏈接指向不同的URL?

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

腳本

在我的網站上,我具有指向每個頁面菜單(通常的“服務”,“關於我們”,“聯系我們”菜單)上的“ 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)這是否是一種好方法

您的“聯系我們”頁面肯定有固定的位置嗎? 對我來說,這似乎是不必要的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;

如果禁用了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;
 }
}

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM