WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:戻るボタンで選択中のリンクが移動してしまう

0:[投稿] funako [URL] [2004/01/09 15:39 ][環境:IE6,WIN98SE わからない]

はじめまして。

タイトルの通りなのですが、一旦飛んで戻るボタンで戻ると、飛んだリンク個所からそのページの中にある次のリンク個所に選択中のリンクが移動してしまいます。正常な所もあるのですが・・・


1:[回答] いそね [2004/01/09 15:59 ]

もう少し情報が無いと答えようがないかと思います。

・「選択中のリンク移動する」というのは
フォーカスされているリンク項目が変わっているということでしょうか?
例)A・B・Cのリンクがあり、Aをクリックして遷移した後
戻るボタンで戻ると、AにあったフォーカスがBに移動している

・リンクは何で作られていますか?
<a href="〜">ですか?JavaScriptなどを使っていますか?
→ブラウザのバグか、ソースの誤りによるものか
原因を切り分けしやすくなります。

・またそれによって何か不都合が生じているのでしょうか?
→対策・代替案を提示することができます。

問題箇所のソースを貼るなどしてみてはいかがでしょうか?


2:[関連] funako [2004/01/09 17:23 ]

>「選択中のリンク移動する」というのは〜
おっしゃる通り、フォーカスされているリンク項目が変わっているということです。

>リンクは何で作られていますか?
ソースは下の通りです。ポップアップのJavaScriptを使用しています。

<A HREF="linkA.htm" TARGET="main"
onMouseOver = "showToolTip(event,'リンクA')"onMouseOut = "hideToolTip()">○</A>

このようなリンクを複数設置しているのですが、リンクによってフォーカスされているリンク項目が移動してしまうものとしないものがあります。ソースに違いは無いと思うのですが・・・。

ちなみに、BODYタグの直後に下記のソースを入れています

<SCRIPT language = "JavaScript">
<!--

// 背景色
popupColor = "#51B1B9";

//
function showToolTip(e,helpmsg){
  if(document.getElementById && !document.all){
    x = e.pageX;
    y = e.pageY;
    document.getElementById("lay").style.left = x + 10;
    document.getElementById("lay").style.top = y + 20;
    document.getElementById("lay").style.background = popupColor;
    document.getElementById("lay").innerHTML = helpmsg;
    document.getElementById("lay").style.visibility = "visible";
  }
  else if(document.all){
    x = event.offsetX;
    y = event.offsetY;
    document.all("lay").style.pixelLeft = x + 10;
    document.all("lay").style.pixelTop = y + 20;
    document.all("lay").style.background = popupColor;
    document.all("lay").innerHTML = helpmsg;
    document.all("lay").style.visibility = "visible";
  }
  else if(document.layers){
    x = e.layerX;
    y = e.layerY;
    document.layers["lay"].moveTo(x + 10, y + 20);
    document.layers["lay"].bgColor = popupColor;
    document.layers["lay"].document.open();
    document.layers["lay"].document.write(helpmsg);
    document.layers["lay"].document.close();
    document.layers["lay"].visibility = "SHOW";
  }
}

//レイヤーの非表示
function hideToolTip(){
  if(document.all){
    document.all["lay"].style.visibility = "hidden";
  }
  else if(document.getElementById){
    document.getElementById("lay").style.visibility = "hidden";
  }
  else if(document.layers){
    document.layers["lay"].visibility = "HIDE";
  }
}

window.onerror = null;

// -->

</SCRIPT>

ちなみに遷移したページにも同じ形式のリンクとJavaScriptを設置しています。


>またそれによって何か不都合が生じているのでしょうか?
上記のように"○"というテキストにリンクを貼り、それを連続して設置しまっているので、(イラスト ○○○・・・というように)戻るボタンを多用する人はページを飛ばしやすくなってしまうのではないかと思いまして・・・。リンクが繋がらない、画像が見えないというような致命的なエラーではないので、急いで修正しなければならないというわけではないと思いますが何故こうなるのか気になってしまったので。

知識が足らない初心者なので説明が足りず、申し訳ありませんでした。また到らない部分がありましたらおっしゃってくださるとありがたいです。


3:[回答] バギンズ [2004/01/09 22:18 ]

>showToolTip(event,'リンクA')
表示しているメッセージ中にタグがあると、戻ったときに次のリンクへ移動していますね。

ツールチップ用のDIV要素の中に<P></P>を入れるといいかも。

<DIV id=lay style="FONT-SIZE: 10pt; POSITION: absolute"
align=center><P></P></DIV>

あと、一応JavaScript側も
〜.innerHTML = helpmsg;
         ↓
〜.innerHTML = '<P>' + helpmsg + '</P>';
にした方がいいかな。


4:[質問] funako [2004/01/10 15:34 ]

>表示しているメッセージ中にタグがあると・・・
そうでした、言うのを忘れていました。一部のメッセージの中に<B>を使用していました。

上記のものを入れてみましたが、やはり違うところに移動してしまいます・・・。メッセージの中にタグを使用しない方がいいということなんでしょうか。


5:[回答] バギンズ [2004/01/11 01:06 ]

私のIE6の環境では、
メッセージ中にタグが有る場合は、
〜.innerHTML = helpmsg;
にし、タグがない場合は
〜.innerHTML = '<P>' + helpmsg + '</P>';
にすると、とりあえずうまく動きましたが
なんの根拠もなければ、他のブラウザでの挙動もどうなるかわかりません。

>メッセージの中にタグを使用しない方がいいということなんでしょうか。
その方が無難ですね。
元々、「戻る」ボタンで戻ってきた時の動作が規定されているわけではないので。


6:[完了] funako [2004/01/11 19:57 ]

そうですね・・・とりあえずタグをはずすことにしました。

いそねさん、バギンズさん、丁寧なご返答本当に有難うございました!! 大変お世話になりました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World