フォームタグのinputタグ内にカーソルを持っていくと、下記エラーとなります。環境は、
prototype.js(1.6)×IE(8)です。FFではエラー表示となりません。
エラーの意味と対処方を教えてください。
メッセージ: オブジェクトがありません。
ライン: 3936
文字: 5
コード: 0
URI: http://ほげほげ/prototype.js
▼該当と思われる行付近
3965行 function getEventID(element) {
3969行 if (element._prototypeEventID) return element._prototypeEventID[0];
3970行 arguments.callee.id = arguments.callee.id || 1;
3971行 return element._prototypeEventID = [++arguments.callee.id];
3972行 }
No.5ベストアンサー
- 回答日時:
#2, 4 です。
(※以下、全てのコードの全角空白は半角空白に置換してください。)
---------
/* Prototype JavaScript framework, version 1.6.1
* (c) 2005-2009 Sam Stephenson
*
* Prototype is freely distributable under the terms of an MIT-style license.
* For details, see the Prototype web site: http://www.prototypejs.org/
*
*--------------------------------------------------------------------------*/
...
// 4516行目
function observe(element, eventName, handler) {
element = $(element);
var responder = _createResponder(element, eventName, handler);
if (!responder) return element;
if (eventName.include(':')) {
if (element.addEventListener)
element.addEventListener("dataavailable", responder, false);
else {
element.attachEvent("ondataavailable", responder);
element.attachEvent("onfilterchange", responder);
}
} else {
var actualEventName = _getDOMEventName(eventName);
if (element.addEventListener)
element.addEventListener(actualEventName, responder, false);
else
element.attachEvent("on" + actualEventName, responder);
}
return element;
}
---------
window だけ別処理にしているわけではなさそうです。
エラーが発生しない流れは、以下のようになると思います。
------
function loadListener (event) {
var element = document.getElementById('undefined');
var firstChild = element.firstChild; // エラー: オブジェクトがありません。
}
window.attachEvent('onload', loadListener); // 実行され、エラーが発生する
window.attachEvent('ononload', loadListener); // 実行されないので、エラーも発生しない
------
No.6
- 回答日時:
横からですが…
質問文
>カーソルを持っていくと、下記エラーとなります。
#1の補足
>下記へ変更したら、エラーが表示されなくなりました。
からの推測ですが、
もしかして、何らかの処理をしたくて、スクリプトを設置しているわけではなくて、エラーが出ることだけが問題なので出なくしたいということのように感じられますが。
質問者様の文章のなかに、本来スクリプトで処理している機能が実現できているかいないかについての記載がまったくないので、ひょっとしてそのソースにはスクリプトが必要ないのではないかと思った次第です。
あるいは、少なくとも原因となっているイベント設定に関係する処理は不要であるとか?
もしそうならば、関連するスクリプトの部分をはずしてしまうのが、修正するよりも簡単かと思います。
(関連する部分を特定することが、できないのかもしれませんが)
スクリプトで処理する必要がまったくないのであれば、全部削除してしまうのが一番簡単です。
( <script ~~> ~ </script> のタグを全部削除する )
違っていたなら失礼。
No.4
- 回答日時:
#2 です。
Google Chrome 5, IE8 で試してみましたが、onload は通りませんね…。
---------
<script type="text/javascript" src="./prototype-1.6.1.js"></script>
<script type="text/javascript"><!--
Event.observe(window, 'load', function(event) { alert('window loaded (1)'); }); // 実行される
Event.observe(window, 'onload', function(event) { alert('window loaded (2)'); }); // 実行されない
//--></script>
---------
原因は別にあるのではないでしょうか。
No.3
- 回答日時:
Event.observe(window, 'load', function() {
となっていた箇所を、下記へ変更したら、エラーが表示されなくなりました。
Event.observe(window, 'onload', function() {
==>
不可解ですね。Prototype.jsのEvent.observe()
は、Event.observe(element, eventName, handler)の構文で、
eventNameにはonを取り去ったevent名をしていするはずなのに...
http://api.prototypejs.org/dom/event/observe/
windowオブジェクトは、elementじゃないから特別なのかしら...
No.2
- 回答日時:
■IE8「オブジェクトがありません」
----
var element = document.getElementById('undefined'); // #undefined は存在しないので、null を返す
// 行: 50
// エラー: オブジェクトがありません。
var firstChild = element.firstChild;
----
正確にいえば、「TypeError: firstChildプロパティを持つオブジェクトが存在しません」です。
モダンブラウザならば、「TypeError: Cannot read property 'firstChild' of null」を返します。
「オブジェクトがありません」とあると、未定義の変数からプロパティを呼び出したように感じるかもしれませんが、実際はそうではなくデータ型のエラーです。
■IE8「オブジェクトを指定してください。」
----
hoge(); // オブジェクトを指定してください。
----
IE8で未定義のオブジェクトを指定すると、「オブジェクトを指定してください。」のエラーを返します。
同じコードをモダンブラウザで実行すると、「ReferenceError: hoge is not defined」を返します。
■対処法
「ライン: 3936」「文字: 5」なので、「3936行目の行頭から5文字目」付近をみてください。
掲示されたコードには3936行目を含まないので、判断が出来ません。
また、3936行目の関数をコールしている部分もみてください。
prototype.js の関数を呼び出しているコードがあるはずです。
原因としては、
・IE8未対応のメソッドを使っている (undefined のプロパティを呼び出している)
・関数に不正な引数を渡している
・prototype.js のバグ
のいずれかが考えられます。
No.1
- 回答日時:
エラーの意味と対処方を教えてください。
=>エラーの意味は、そのまんま「オブジェクトがありません。」
ですが、prototype.jsやIE(8)に原因がある事は、おそらくないでしょう。
他にjavascriptのライブラリーとかプラグインとかを使ってませんか、
といっても、そのライブラリーのバグが原因である事もまれでしょう。
ほぼ、あなたの使い方、が誤っているのだと思われます。
対処方
=>お使いのライブラリーもしくは、あなたがコーディングした部分だけ
でも提示する事が出来れば、アドバイスできるかもしれません。
自分で調べるならIE8の開発者ツール(F12)を使って、所謂デバッグ
という作業をしてください。
この回答への補足
Event.observe(window, 'load', function() {
となっていた箇所を、下記へ変更したら、エラーが表示されなくなりました。
Event.observe(window, 'onload', function() {
但し、loadやonloadの違いなど、分かっていません。
色々試し倒したうち、たまたまエラーが表示されなくなったのがこのやり方だった、というだけ
です。
今後のためにも、今回の現象を理解しておきたいので、
上記内容で、今回のエラー原因、及び正しい対処方がどういうものか、
アドバイスいただけないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- その他(プログラミング・Web制作) seleniumbasic chrome操作について 1 2023/03/29 15:40
- JavaScript javascriptで入力フォームが空欄の時にアラートによるエラーを出すコードを書いています。 2 2023/06/13 17:58
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- その他(プログラミング・Web制作) pythonでのカーソル移動がずれる 2 2023/07/30 08:51
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面間でのJavaScrip...
-
Webページ中の javascript をVB...
-
タブブラウザで focus() を実...
-
ローカルのレジストリを読みたい
-
JavaScriptの仕様(ECMA-262以外)
-
javaScriptでグローバル変数に...
-
CSSのクラスを動的に変更 classで
-
JavaScriptで ブラウザの閉じる...
-
jqGridの入力内容をサーバに保...
-
javascript 文字列の最後から1...
-
一定時間ごとの実行
-
VB.NET2003 テキストボックスに...
-
Excel VBA にて JavaScript の...
-
【JavaScript】ソースのコメン...
-
confirm()をはい/いいえ に切...
-
ラベルの色がかわってくれない
-
Vba SelStart、SelLen教えてく...
-
時間稼ぎの命令文とは?
-
alert()が実行できない
-
JavaScriptでショートカットキ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルのレジストリを読みたい
-
Webページ中の javascript をVB...
-
jquery か javascript で json ...
-
エクセル2010のvbaについて
-
javaScriptでグローバル変数に...
-
画面間でのJavaScrip...
-
文字を移動させその位置を表示...
-
フォルダ内のファイル名を取得...
-
オライリーのプログラミングPHP...
-
ASP.NETでURLにマッピングされ...
-
CSSのクラスを動的に変更 classで
-
イベントevt?evt.target:event....
-
一定時間経つと画像を消す方法
-
クラス デフォルトプロパティの...
-
event.srcElementの動的設定
-
「リンク」と「ハイパーリンク...
-
VBAの引数の指定 カッコとイコ...
-
strictモードでなぜエラーにな...
-
JSの「document.getElementById...
-
Shell.ApplicationでのIEオブ...
おすすめ情報