WEB相談室

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

タイトル:立ち上げたブログで「ページでエラーが発生しました」と表示されます。

0:[投稿] makkoto [2006/09/10 16:12 ][URL] [環境:WINXP わからない]

ブログを作ったのですが、「ページでエラーが発生しました」と表示されてしまいます。ダブルクリックすると、
ライン:107
文字:3
エラー:オブジェクトでサポートされていないプロパティまたはメソッドです
コード:0
URL:(私のブログのURL)
と表示されます。
どこが悪いのでしょうか?徹夜でいろいろと調べたのですが、結局原因がわかりません。どうかアドバイスをお願いいたします。


1:[回答] 燕雀 [2006/09/10 17:34 ]

var d = new Date();
var et = window.d.getTime();

日付オブジェクトに getTime() というメソッドはありません.
getHours() とかのメソッドを使用してください.


2:[質問] makkoto [2006/09/11 02:35 ][URL]

ありがとうございます。
しかし、やってみましたが直りません。
どうやらライブドアブログで、同じ現象が多発しているらしく、ライブドアブログの質問コーナーや2チャンネルでこの現象が書かれていました。
依然として、原因はわからないようですが・・・。

http://knowledge.livedoor.com/13195
http://pc8.2ch.net/test/read.cgi/blog/1154960158/l50


3:[回答] かんな [2006/09/11 11:07 ]

>日付オブジェクトに getTime() というメソッドはありません.

ありますよ。

http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/15-9_Date_Objects.html#section-15.9.5.9

var 宣言された変数は window オブジェクトのプロパティに追加されないのが原因かと。

var d = new Date();
var et = d.getTime();


4:[回答] きあらうむ [2006/09/11 11:26 ]

>>1
日付オブジェクトに getTime() というメソッドはあります。


エラーの原因は、ページ読み込み時点で stock_check.js にて下記の命令で宣言されている日付オブジェクト

var d = new Date();

が、他のJavaScriptによってdocumentオブジェクトに上書きされてしまっているためです。
異なる動作を提供するJavaScript同士で、変数名の競合が起こっています。

エラーの詳細ですが、発生箇所はstock_check.jsの106行目の下記命令です。

var et = window.d.getTime();

この部分はページ読み込み後、マウスの動作に反応して実行される命令なので、ページ読み込みの途中で 変数d が書き換えられてしまうと動作しません。

# 問題の検証方法
ページが読み込まれた後、アドレスバーに下記のJavaScriptコードを入力し、実行する。

javascript: alert(d)

結果 : FireFoxの場合、アラートダイアログに"[object HTMLDocument]"と表示されます。

ページ読み込み完了時点で日付オブジェクトが生き残っていれば、上記の検証結果ではアラートダイアログに "Mon Sep 11 2006 11:00:23 GMT+0900" のような日付をあらわす文字が表示されるはずです。

[ 解決方法 ]
livedoorブログの仕組みはわかりませんので、見当違いの可能性はありますが・・。

# 以下の条件を満たすことが前提
  1) 全ブログページに共通して使用されるページ要素または JavaScriptファイルの編集が可能
  2) (1)の要素に任意のJavaScript命令の記述が可能

この(2)で、下記のJavaScriptが実行されるように記述してください。
=============================================
document.getTime = function func()
{
 return (new Date()).getTime()
}
=============================================

HTMLに記述する場合は<script type="text/javascript"></script>
で囲んでください。
JavaScriptファイルに書き込む場合は、一番最後の行に追加してください。
上記の命令実行後、エラーは表示されなくなります。
IE6とFireFoxで確認しました。


5:[回答] きあらうむ [2006/09/11 11:34 ]

>>3

これでエラーにはなりませんね。。

<script type="text/javascript">
var d = new Date();
var s = d.getTime();

function func()
{
var ss = window.d.getTime();
document.write([d,s,ss].join("<br>"));
}
func();
</script>


6:[関連] 燕雀 [2006/09/11 22:45 ]

>>>3
>>>4
> 日付オブジェクトに getTime() というメソッドはあります。
---------------
そうですね.思い込みによる勘違いでした.失礼しました.


7:[完了] makkoto [2006/09/14 20:57 ][URL]

みなさん、いろいろと有難うございました。
ライブドア側のミスだったらしく、今は改善されたようです。

回答(必須): 状態:

お名前(必須):

URL:




[戻る]