IEの「オブジェクトを指定してください ライン1 文字1」エラーについて

about : javascript ajax 
publisher : mansai

onMousemoveやonClickなどに
javascript関数を割り当てている場合、
Javascriptで構文エラーやタイプミスがないにもかかわらず、
InternetExplorerで「オブジェクトを指定してください」という
エラーが出る場合があります。

Javascriptでは、変数も関数も全部「オブジェクト」なので
エラーの意味としては「関数を指定してください」、つまり
「指定された関数が未定義ですor見つかりません」という
意味です。

この主な原因は
jsファイルが読み込まれる順番に問題があるか
jsファイルが実行されるタイミングに問題があることが
ほとんどです。

jsファイルの実行順は以下のような感じのようです。

・<script>タグで埋め込まれたJavascriptは、
 HTMLの読み込みが終わる前から上から順番に読み込み・実行。
  関数の定義があったら読み込まれた時点ですぐに定義する。
  (よって、HTMLのロードは不完全な場合があるので、
  jsファイルを読み込んだ時点で
  getElementByIdとかを呼び出してもうまくいかない場合がある。)

 ・その後bodyタグのonLoad属性の関数を実行。

また、関数を定義する順番としては
以下のような注意点があります。

 ・HTMLのロードが完全に終わっていない状態で
  getElementByIdなどを呼び出すと、
  失敗してスクリプトの実行がそれ以上進まなくなる場合がある。

 ・onMousemove、onClickで指定された関数は、
  HTMLのロードが完了した後に定義しなければならない。


そこで、以下のことについて気を付ける必要があります。

 ・<script>タグで読み込んだ.jsファイルには
  読み込んだらすぐ実行するような内容は書かない。

 ・javascriptの実行は
  BODYタグのonLoad属性で処理を開始する。
  (もし可能ならBODYタグのonLoad属性の関数で関数を定義する。)

 ・その他のタイミングで関数を実行したいとき、
  特にonClickやonMousemoveに関数が記述されている場合や
  getElementById関数を使う場合には、
  イベントやidが設定されたHTMLを記述した下に
  <script>タグを記述する。

関連
FlashとJavaScriptの連携方法 - 2009-06-15 04:00:00
Ajaxの使いどころ - 2008-08-28 11:00:00
トラックバック
※トラックバック機能はOFFです。
コメント
※コメント機能はOFFです。
powered by
サイト内検索

CALENDER
<先月 2013年05月 来月>
01 02 03 04
05 06 07 08 09 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

05/03 : 憲法記念日

05/04 : みどりの日

05/05 : こどもの日

05/06 : 振替休日

STETUS

起動日時:2013-05-23 13:55:20
ホスト:ec2-107-21-186-38.compute-1.amazonaws.com (107.21.186.38)
クライアント:CCBot/2.0
処理時間:0.596秒
データベース:34 query
キャッシュ:14.7% hit