■キー割当表示 [Shift-H] ─ KeyNavi:キーボードを活用して 
ホームページを快適に─
 
ホーム [0] JavaScriptバグ&回避法リスト:1.目次 [1] 6. その他 ・サイトマップ [Shift-S]

JavaScriptバグ&回避法リスト
 ■ 6. その他

【このページ内のトピック: 「Ctrl-矢印」でフォーカス移動・「G/T」連打で自動ナビ】
6.1 ページ内移動でlocation.hrefが不変(Opera)
6.2 location.reload()でページの先頭に戻る(各種)
6.3 window.statusが動作せず(Opera7)
6.4 外部JavaScriptファイルが再読込みされず(Opera6)
6.5 負の整数をtoString(10)すると記号に(NS4.0x)

「NS,NN=Netscape Navigator」「IE=Internet Explorer」の略です。

 ■ 6.1 ページ内移動でlocation.hrefが不変(Opera)

同一ページ内で リンク「<a href="#name"></a>」や「location(.href)=...」で移動したときに 「location.href」の値がページロード時の値のまま 変わりません (Opera6,Opera7)。 対応するには 現在のURLを変数などに保持し イベントハンドラ等を設定してページ内の移動を自分で追いかけます。

Operaがある人は実験してみて下さい。

ここに「<a name='opera_bug'></a>」があります
name=opera_bugへのリンク

 ■ 6.2 location.reload()でページの先頭に戻る(各種)

普通、ブラウザでページの「更新」(再読込み)を実行した時は スクロール位置が変わりません。
NS4とNS6については例外があります。
NS4の場合 ページのレイアウトによっては先頭や最後に スクロールしてしまうことがあります。 このページでもNS4では再読み込み時にはスクロール位置を保てないようです。

NS6の場合はページ内リンクに移動(URLが「...html#name」になる) した後にスクロールして、それから再読み込みを実行すると スクロール位置がそのURLが指し示す位置に戻ります。 この場合もスクロール位置を保てません。

ちなみに これと同じ現象が別のページ移動後に 「戻る」ボタンを押したり「location.back()」を実行した時にも発生します。

しかしIEを含めて多くのブラウザでは「location.reload()」を実行すると スクロール位置がページの先頭になります。

クッキーにスクロール位置を保存してからreload()を実行するなどして 現在位置を保つことができます(「Z」或いは「/」キーを押してみて下さい)。

 ■ 6.3 window.statusが動作せず(Opera7)

「self.status='';」或いは「window.status='';」を実行しても何も表示されません。
Opera7.0/7.11では発生していましたが Opera7.20で修正されています。 またJavaScriptの実行速度が遅い問題がありましたが直っています。

 ■ 6.4 外部JavaScriptファイルが再読込みされず(Opera6)

Windows版Opera6では「Reload」ボタンを押し ページの内容を再読込みしても 外部ファイルのJavaScript 例えば 「<script language="javascript" src="keynavi_ja.js"></script>」 で指定した「keynavi_ja.js」は更新されません。 これを解決するには キャッシュを空にするか
「ファイル」→「設定」→「履歴とキャッシュ」
該当スクリプトのURLにアクセスし スクリプトの内容を表示した上で 「Reload」ボタンを押します。 このようにOpera6で外部スクリプトのデバッグを行う時は注意が必要です。

 ■ 6.5 負の整数をtoString(10)すると記号に(NS4.0x)

NS4.03/4/5ではマイナス値(例えば「n=-1」)を「n.toString(10)」すると記号「/」が 返されます。 困ったことに基数が「10」ではなく「16」でも記号になります。
引数がない場合は正しい値が返されます。 基数が10の場合は 「n+""」のようにして 数値を文字列に型変換してもOKです。
NS4.08では基数が「10」の時は大丈夫ですが「16」のときに記号になります。

そこで以下のようにしています。


function kl_tostr(v,base){
        if(!base) base=10;
        var t=Math.abs(v).toString(base); if(v<0) t="-"+t; return t;
}

NS4.5,4.61,4.7などでは発生しません。




ページの先頭へ     

前のページへ
JavaScriptバグ&回避法リスト 目次 【数字キーでアクセス】
例 : 「2.1節」は「2」キーを2回連打して移動。「Q or P」で戻る。
「Ctrl-矢印」でフォーカス移動。
1. 目次
2. 基本編
3. イベント(一般)編
4. イベント(キー入力)編
5. レイヤー編
6. その他
6.1 ページ内移動でlocation.hrefが不変(Opera)
6.2 location.reload()でページの先頭に戻る(各種)
6.3 window.statusが動作せず(Opera7)
6.4 外部JavaScriptファイルが再読込みされず(Opera6)
6.5 負の整数をtoString(10)すると記号に(NS4.0x)


ホーム [0] JavaScriptバグ&回避法リスト:1.目次 [1] 6. その他 ・サイトマップ [Shift-S]
■キー割当表示 [Shift-H] ─ KeyNavi Project 2003 ─