10

次のコードがあります。

// Creates a timer to check for elements popping into the dom            
timer = setInterval(function ()
{          
    for (p in pixelTypes)
    {                             
        checkElems(pixelTypes[p]);
    }                            
}, 10);

// Add Document finished callback.
$(document).ready(function ()
{         
    // Document is loaded, so stop trying to find new pixels
    clearInterval(timer); 
});       

Firefox では問題なく動作しますが、IE6 では $(document).ready 行で「Object Expected」エラーが発生します。

IE6がそれを認識しない原因がわかりません.jqueryはこの時点で完全にロードされています.

これは既知の問題ですか?

4

12 に答える 12

15

興味のある人のためのいくつかのヒント:

$(document).ready(function() {...});$(function() {...});全く同じ意味です。後者は前者の略です。

複数の Javascript ライブラリを使用して大規模なサイトを開発する場合、または他の人々の作業と互換性があることを意図したプラグインを開発する場合、ドル記号 ($) が jQuery オブジェクトに関連付けられていることを信頼することはできません。安全のために、次の表記法を使用してください。

(function($) { [your code here] })(jQuery);

これにより、jQuery が自己実行関数に渡され、$ がこの関数内の jQuery オブジェクトに関連付けられます。次に、 $ が関数の外で何を表しているかは問題ではありません。

質問に戻りますが、エラーが発生したときにタイマー変数が割り当てられているかどうかを確認しましたか? ブラウザはすべてを1行として表示すると信じている$(document).ready(function() {...});ので、それが問題のある行であることを示す何らかのデバッガーがある場合、それはタイマー変数である可能性があります...

最後に: Javascript では、開き中括弧を新しい行に配置するのは正しくありません。これは、Javascript のセミコロン挿入により、非常に悪いエラーを引き起こす可能性があります。詳細については、Douglas Crockford の Javascript: The good parts をお読みください。

http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=sr_1_1?ie=UTF8&s=books&qid=1267108736&sr=1-1

とにかく、私が誰かを動揺させなかったことを本当に願っています。問題を解決してください!

編集:これが robertz が完全に修飾されたという意味かどうかはわかりませんが、私の知る限り、URL が完全に修飾されている場合、欠落している部分がないことを意味します。http:// または https:// (またはその他のプロトコル) で始まる絶対 URL です。私が間違っている場合は、私を修正してください!

于 2010-02-25T14:42:25.083 に答える
5

私も過去にこれと同じ問題を抱えていました。それは散発的な問題であり、再現するのは恐ろしいものでした.

私が見つけた解決策は、に置き換えること$(document).ready(function() {...});jQuery(function() {...})あり、それは魅力のように機能しました!

私のユースケースでは、一番下に移動$(document).ready(function() {...});してもうまくいきませんでした。

この投稿のコメントは非常に役に立ちます (この方法について最初に読んだ場所)

于 2009-11-19T23:06:43.090 に答える
3

誰かが同じ問題を抱えている場合は、持っているJavaScriptを呼び出すときに確認する必要があります type="application/javascript"。私はそれを削除し、修正しました。IEとタイプThingに問題があると思います

于 2010-07-22T03:06:20.210 に答える
1

スクリプトの種類がtext/javascriptであることを確認してください

<script type='text/javascript'
于 2010-09-29T06:29:23.933 に答える
1

jQuery がロードされていることは確かですか? 次のようなアラートでデバッグしてみてください。

alert(typeof $);

別の構文を試すこともできます。

$(function() {
     clearInterval(timer); 
});

わかりましたので、あなたのコメントから、上記は役に立ちません。「オブジェクトが必要です」というエラーは、私の経験では構文エラーで発生するようです。それはあなたが持っている正確なコードですか?そうでない場合は、投稿していただけますか?

于 2009-01-21T01:21:23.387 に答える
1

DateTime ピッカーは、私のローカル XP テストでは問題なく動作しましたが、サーバーにデプロイされると、"Object Expected" に失敗しました。2日間持続した後、これが私の問題を解決する方法であり、Javascriptのパスの周りにUrl.Contentを追加しました!

<script src="<%= Url.Content("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script>

<script src="<%= Url.Content("~/Scripts/ui/minified/jquery.ui.core.min.js") %>" type="text/javascript"></script>  
<script src="<%= Url.Content("~/Scripts/ui/minified/jquery.ui.datepicker.min.js") %>" type="text/javascript"></script>
于 2011-05-24T12:55:52.083 に答える
0

$(document).ready() は、DOM の準備が整ったときに通知しますが、すべてのアセットが入ってくるとは限りません。

すべてのアセットの読み込みが実際に完了したことを確認したい場合は、代わりに$(window).load()を使用してください。これの最も一般的な用途は、画像の読み込みが完了したことを確認することですが、スクリプトの問題にも有効な場合があります。

于 2009-11-23T15:04:09.750 に答える
0

簡単な修正を見つけることができたので、私は自分のマシンでこの問題に遭遇しました。これが私がしたことです:

1.ニックフの提案「アラート(typeof $)」でJavaScriptをデバッグし、「未定義」アラートメッセージを受け取りました

2.次に、jQuery スクリプト リソースを完全修飾しました。

3.マイページをリロードして「機能」アラートメッセージを受信した

ところで、XP で IIS 5.1 を使用しています。私の Web サイトは、「ワイルドカード マッピング」を使用して asp.net mvc フレームワークを利用するように構成されています。この構成がリンク切れの原因だと思います。

古いバージョンの IIS で MVC をセットアップする方法の詳細については、Phil Haack の投稿 ( http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough) を参照してください。 aspx

于 2009-04-18T23:09:30.800 に答える
0

あなたが本当にあなたのように要素をポーリングするべきだとは思いません。

ページを操作するのに十分なだけブラウザが読み込まれるとすぐに、ドキュメント準備完了イベントが呼び出されるため、$(document).ready()ブロック内で DOM 処理を実行する必要があります。

于 2009-01-21T01:19:44.667 に答える
0

ドキュメントが「準備完了」かどうかをチェックする古い skool の方法を試すことができます...終了 </body> タグの直前にスクリプトを配置します - jQuery の「準備完了」イベントと同じ効果があると思います - 実際には、おそらくこうすると早い。


私の経験では、構文エラーが原因で IE6 の "Object expected" エラーが表示されます

于 2009-01-21T08:02:18.380 に答える
0

オブジェクトが未定義であることを通知するスクリプトエラーという同じ問題がありました。ここにリストされているすべての提案を試してみましたが、役に立ちませんでした。私が考慮しなかったのはセキュリティだけでした.フォーム認証についてすべて忘れていました.jQueryライブラリへのアクセスを拒否していたスクリプトフォルダーの承認について忘れていたことがわかりました!!!

お役に立てれば。

于 2010-11-15T16:02:06.307 に答える
0

body 要素内にある script 要素内にある場合 (つまり) ..

原因は、script-tag で渡す属性である可能性があります。もしそれが:

<script type="text/javascript">...</script>

IE6 ではエラーが発生する可能性があります。使用する必要があります

<script language="javascript">...</script> 

その後、エラーはなくなります。

于 2010-02-25T14:13:48.650 に答える