2

共通の href (ローカル ページまたは Web サイト) を持つリンクをクリックし、href が正常に読み込まれると、FF2 と IE7 の両方で a:visited スタイルのリンクが表示されます。

href="javascript:anyfunc()" を含むリンクの場合、IE7 は上記のように動作しますが、FF2 は a:visited スタイルを表示しません。どの DOCTYPE でも変更はありません。

Q: JS リンクと :visited のどちらの動作も正しいと見なされますか?

Q: JS リンクをクリックした後、FF2 はアンカーの状態を変更しませんか?

Q: onClick ハンドラーをアタッチしたり、JS でクラス/スタイルを変更したりする必要なく、href が別のページであるか JS リンクであるかに関係なく、FF2 に :visted スタイルを使用するように指示する簡潔な方法はありますか?

例は次のとおりです。

<html>
<head>
<style>
div.links { font-size: 18px; }
div.links a { color: black; text-decoration: none; }

div.links a:visited { background-color: purple; color: yellow; }
div.links a:hover { background-color: yellow; color: black; }
</style>

<script>
function tfunc(info) { alert("tfunc: info = " + info) }
</script>
</head>
<body>

<div class="links">
    <a href="javascript:tfunc(10)">JS Link 1</a><br>
    <a href="javascript:tfunc(20)">JS Link 2</a><br>
    <a href="http://www.google.com/">Common href, google</a>
</div>

</body>
</html>
4

5 に答える 5

1

この種のリンクのスタイルを設定するのは難しいでしょう...それらは同じ href を持っているかもしれませんが、JS を介して何かを実行できる可能性があります (そのため、リンクにアクセスしないように見える場合があります)。

HTML ページなどにリンクし、イベント ハンドラーをリンクにアタッチする方法はありますか (そして、false を返してリンクのクリックを停止します)。リンクが実際に JS フックである場合は、 a などの要素を使用し、それに応じてスタイルを設定します...エンド ユーザーがクリック可能<button>であることを認識できるように追加することを忘れないでください。cursor: pointer

javascript:function(something)href でインラインを使用するのは悪い習慣です。目立たないイベント ハンドラーを試してください。

于 2009-04-23T00:08:42.510 に答える
1

これが私の見解です:

Q: JS リンクと :visited のどちらの動作も正しいと見なされますか?

リンクの目的は、リソースを取得することです。リンクがどこにも移動しない場合、何を「訪問」していますか? 私の意見では、この観点から動作は正しいです。

Q: JS リンクをクリックした後、FF2 はアンカーの状態を変更しませんか?

リンクの状態を :visited に変更しないように見えますが、それがページ内の要素を指していない限り (つまり、リンクが暗黙的に訪問されている現在のページを指していることを意味します)、または既にアクセスされている別のリソースを指している場合を除きます。 .

Q: onClick ハンドラーをアタッチしたり、JS でクラス/スタイルを変更したりする必要なく、href が別のページであるか JS リンクであるかに関係なく、FF2 に :visted スタイルを使用するように指示する簡潔な方法はありますか?

私はそうは思わない。hrefリンクの を "#" にポイントしonclick、JavaScript のニーズに合わせてハンドラーを使用すると、おそらく訪問済みの効果を得ることができます。

于 2009-04-30T19:45:17.340 に答える
1

a:hover は、有効にするために、CSS 定義で a:link および a:visited の後に配置する必要があります。

于 2009-04-30T19:24:48.917 に答える
1

この質問が求めていると思われる問題に遭遇しました。次の簡単な例を考えてみましょう。

スタイルシート:

#homebox { display: none;}
#contactbox { display: none; }

html:

<a id="#home"></a>
<a href="#home" onclick="return showHideDiv(this);">Show Home</a>
<div id="homebox">Your home</div>
<a id="#contact onclick="return showHideDiv(this);"></a>
<div id="contactbox">Contact Info</div>

脚本:

function showHideDiv(elem) {
if( elem.style.display && elem.style.display == "none"; ) elem.style.display = "block";
else if( elem.style.display && elem.style.display == "block"; ) elem.style.display = "none";
return true;
}

最も美しいコードではありませんが、href 内で javascript onlick を使用するときに発生する可能性があるいくつかの問題を指摘しています。このようなことをしたい理由は、訪問したスタイルを表示するリロードなしで動的なコンテンツの変更を作成するためです。リンクはボタンよりも便利なので、リンクの訪問済みステータスは内部であっても維持されます。ただし、JavaScript の onclick イベント ハンドラーを使用した内部リンクはもちろんのこと、内部リンクの訪問済みステータスをトリガーするブラウザーに関するいくつかの問題に気付きました。ボタンは、訪問したスタイルを制御する関数をコーディングする必要があります。

于 2011-06-16T19:19:45.553 に答える
0

私はAlexに同意します。リンクは、JSトリガーではなく、何かへのリンクである必要があります。ここでは、ボタンの方がはるかに効果的です。

リンクにJS関数をアタッチする場合は、目立たないJSを使用して、その関数をクリックイベントにアタッチする必要があります。

jQueryを使用したEG:

$("#myLinkID").click(function () { 
  //function stuff
});
于 2009-04-23T01:50:08.883 に答える