過去ログ表示


過去ログ 72 を表示

トピック内全 4 記事中の 1 〜 4 番目を表示
[ 最新記事及び返信フォームをトピックトップへ ]
このトピックの全ページ / [0]

FireFoxで見ると不思議な事が起こるのですが。
(#10958) このトピック中1番目の投稿
(環境: WinXP/FirefoxPR)

 いつも質問ばかりで済みませんが教えてください。

 ヤクルトスワローズの公式サイト(http://www.yakult-swallows.co.jp/)を見て
いると、一定時間で中央と左側のフレームが自動的にリロードされてしまい、トップ
ページへリロードされてしまいます(書き込みをしている場合などに難儀します)。

 また、トップページの中央のリンクを踏むと「 指定された日付の形式が間違って
います。」となってしまいます。インターネットエクスプローラーではその様な事
はおきません。

 これはFireFoxの仕様なのか、バグなのか、また単にIEの掟破りなのか、FireFox
の挙動が本来正しいのか、その他の理由なのか、私には全く分からないので質問の
書き込みをさせて頂きたいのです。申し訳ありませんが、教えてください。
 (Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.3) Gecko/20041001
Firefox/0.10.1 です)。
 よろしくお願いいたします。


Re[1]: FireFoxで見ると不思議な事が起こるのですが。
(#10973) このトピック中2番目の投稿
(環境: Win2000/Mozilla1.8a)

2004/10/04(Mon) 22:13:58 編集(投稿者)
2004/10/04(Mon) 21:41:23 編集(投稿者)

> トップページの中央のリンクを踏むと「 指定された日付の形式が間違って
> います。」となってしまいます。
> インターネットエクスプローラーではその様な事はおきません。

そのエラーは表示されなかったのではっきりしたことはわかりませんが、
アプリケーションがだしているメッセージだとすると、
クッキーをセットするロジックで、以下のように西暦年の値を得るのにgetFullyearではなくgetYearを使っていることが原因の可能性があります。

> <!--today = "20041004";-->
> var date = new Date();
> var year = date.getYear();
> var month = date.getMonth()+1;
> var date = date.getDate();
> (中略)
> var today = year.toString()+month+date;
> var saveData = "lastDisplay="+escape(today) + ";";
> saveData += "expires=Tue, 01 Jan 2019 12:00:00 GMT;";
> document.cookie = saveData;

getYearは、2000年対応(4桁)以前との互換性(2000年より前は2桁)のために、
ECMA Scriptでは「4桁の年-1900」と規定されていて、
4桁の場合に対してはgetFullYear(JavaScript 1.3から)が規定されています。

参考 :
NetScpae DevEdge ( http://devedge.netscape.com/ )内の、
JavaScript Central ( http://devedge.netscape.com/central/javascript/ ) の、
JavaScript 1.5 Reference の、Date Objectの項
( http://devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/ )

ところが、MicrosoftのJScriptは正式にはECMAScript 1.1互換であって、1.2以降についてもかなりの互換性を持っていますが、
getYearに関してはECMAScriptの標準に準拠せず、getFullYearと同じく4桁を返す実装にしてしまいました。
これは、意図的な非互換の導入ではなく、
ECMAScript(JavaScript 1.3レベル)の2000年対応以前に、2000年対応のためにIE独自でgetYearを4桁に変えてしまい、
それに従って書いているサイトの互換性維持のためにECMAScript準拠に変更できなくなってしまった、
というような事情があるのだと思います。
(IEでも<script language="JavaScript1.3とか1.4">などと書くと「年-1900」になるのかどうかは、知りません)

従って、クッキーにセットした、lastDisplay="+escape(today) + ";" というデータの中の「年」の部分が、
IEだと2004年なのに、Mozillaだと104年になります。
(Profileディレクトリーのcookies.txtを覗くと、)
( www.yakult-swallows.co.jpのデータが lastDisplay 1041004 )
( と、104年 10月 04日 になっているのを確認できます。 )
このために、アプリケーションが「日付が不正」と判断していることが考えられます。
IEでもgetFullYearはちゃんと実装されていますので、これが原因ならばサイトに修正を依頼されるといいでしょう。

> 一定時間で中央と左側のフレームが自動的にリロードされてしまい、
> トップページへリロードされてしまいます
>(書き込みをしている場合などに難儀します)。

こちらは調べていませんが、
JavaSctiptにリロードをかけるロジックが入っているが、
IEだとスクリプトの書き方が悪くてそれがスケジュールされることがなく、
IEだけでテストしているためにリロードされて難儀することに気が付かずそのまま放置プレイ、
というのは、わりとよくあるパターンです(^^)

Re[2]: FireFoxで見ると不思議な事が起こるのですが。
(#10974) このトピック中3番目の投稿
(環境: WinMe/Firefox0.9.1)

WinME、Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.7) Gecko/20040626 Firefox/0.10.1

http://www.fbis.jp/Netscape/

ここもそういうことなんですかね・・・ページ全体が延々リロードされます

Re[3]: FireFoxで見ると不思議な事が起こるのですが。
(#10977) このトピック中4番目の投稿
(環境: Win2000/Mozilla1.8a)

2004/10/04(Mon) 22:56:32 編集(投稿者)
2004/10/04(Mon) 22:44:13 編集(投稿者)

> http://www.fbis.jp/Netscape/
>
> ここもそういうことなんですかね・・・ページ全体が延々リロードされます

こちらは、<body onload=" if (self != top) top.location = self.document.location;">
じゃないですかね。
イベントハンドラーはちょっと特殊で、function xxxx(this){ステートメント}と同じような制御になり、thisにはイベントオブジェクトが入ってくるはずです。
それで、ちょっとwith(イベントオブジェクト)という書き方をしたのと同じような感じになります。
で、イベントオブジェクトはonLoadだとbody element objectで、そこからselfやtopを探索し始めることになるような気が...
従って、selfやtopという名前を指定した場合、必ずしもwindow objectのselfやtopになるわけではありません。

ここはwindow.self != window.top とか書かないといけないんじゃないかな?
Netscape 4.xやIEだと、たまたまwindow.selfとwindow.topになると思いますが。


このトピックの全ページ / [0]

返信不可


- Child Tree -