1

シナリオ

私のWebサイトには、すべてのページのメニュー(通常のサービス、About Us、Contact Usメニュー)に「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; 
}

考えられる問題:

ユーザーが最初にサイトにアクセスしたときに、「About Us」セクションに直接アクセスする可能性は十分にあり、Cookieは自分の場所を示すために配置されません。その場合は、一般的なお問い合わせページであるcontatus1.htmlにアクセスしたいと思います。

また、JavaScriptが無効になっている場合、ブラウザはクリックしてもどこにも移動しません。

オンラインで読んで 、JavaScriptのボタンクリックで<a>タグのhrefを変更する方法も確認しましたが、a)アクセシビリティの問題があるかどうかb)それが良いアプローチかどうか疑問に思っています

4

4 に答える 4

2

確かにあなたの「お問い合わせ」ページは固定された場所になりますか?これは私にはクッキーの不必要な使用のように思えます。

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;
于 2013-03-15T14:08:01.973 に答える
0

javascriptが無効になっている場合は、何もできません。Javascriptは実行されません。このフローは、サーバー側スクリプトによってブラウザーに依存せずに処理できます。

于 2013-03-15T14:12:49.860 に答える
0

リンクのhrefをcontactus1.htmlに設定して、JSが無効になってもリンクが機能するようにすることはできませんか?また、Cookieが設定されていない場合は、clientLocationがnull(または空白またはreadCookie関数が返すもの)かどうかを確認し、nullの場合はhrefをcontactus1.htmlに設定します。

于 2013-03-15T14:12:56.693 に答える
0

これを解決する1つの方法は、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 に答える