2005年11月02日
川俣晶の縁側ソフトウェア技術雑記total 5084 count

ブラウザ間非互換性: Safari2において、location.hashの書き換えで発生するリロードと終わらない読み込み中

Written By: 川俣 晶連絡先

 Safari2において、location.hashの書き換えで、2種類の意図せざる挙動を見せることを確認しました。

 1つは、ページがリロードされ、onLoadイベントが再発生すること。

 もう1つは、終わらない「読み込み中」の表示状態になることです。

再現プログラム §

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

<title>test</title>

</head>

<body onload="alert('onload');">

<input type="button" onclick="location.hash = 'A';" 

value="hashの'A'への書き換え"></input>

<input type="button" onclick="location.hash = 'B';" 

value="hashの'B'への書き換え"></input>

</body>

</html>

 このページをSafari2(412.2)にて開くと以下のような症状が発生しました。

  • その時点でアドレス欄に入っているURLの末尾が"#A"ではないとき、"hashの'A'への書き換え"ボタンをクリックすると、ウィンドウのタイトルバーに「"test"を読み込み中」という表示が出たままになり、そのまま何も起こらない
  • その時点でアドレス欄に入っているURLの末尾が"#B"ではないとき、"hashの'B'への書き換え"ボタンをクリックすると、ウィンドウのタイトルバーに「"test"を読み込み中」という表示が出たままになり、そのまま何も起こらない
  • その時点でアドレス欄に入っているURLの末尾が"#A"のとき、"hashの'A'への書き換え"ボタンをクリックすると、"onload"というメッセージが表示され、onLoadイベントが実行されたことを示す
  • その時点でアドレス欄に入っているURLの末尾が"#B"のとき、"hashの'B'への書き換え"ボタンをクリックすると、"onload"というメッセージが表示され、onLoadイベントが実行されたことを示す

 ちなみに、Inrernet Explorer, Firefox, Operaでは、"onload"というメッセージが表示されるのは、ページを開いた最初の1回だけです。ボタンを押すことに対応して表示されることはありません。また、読み込み中のまま何も起こらないという現象もありません。

回避方法 §

 onLoadイベントを実行させない方法は簡単です。同じ値への書き換えを発生させなければ良いのです。つまり、同じ値の場合は、そもそもlocation.hashに代入する必要がないわけで、条件判断をさせて代入しないようにすれば良いはずです。

 しかし、読み込み中の表示がいつまでも続く問題については、回避するための上手いアイデアがありません。

 もしも、誰かが私に良いアイデアを教えることができない場合、Safariではlocation.hashへの代入は使えないという結論になるかもしれません。

Facebook

トラックバック一覧

2007年01月06日コンテンツの情報をURLに保存するFrom: ssabtb

JavaScriptを使用してコンテンツの内容を変更した場合、その変更内容がUR... 続きを読む

2005年11月03日【クロスブラウザ】Safariのlocation.hashFrom: JavaScript++かも日記

ブラウザ間非互換性: Safariのlocation.hash http://mag.autumn.org/Content.modf?id=20051102211029 Safariでlocation.hash時にonloadイベントが発生するケース http://mag.autumn.org/Content.modf?id=20051102212821... 続きを読む

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20051102212821
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.