web-dev-qa-db-ja.com

Internet Explorer 8のjQueryの問題

IE8でjQuery関数を動作させようとしています。 Googleのサーバーからライブラリをロードしています( http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js )。

$(function(){})は呼び出されません。代わりに、エラーObject expectedが表示されます。開発者を開き、コンソールでtypeof $を実行すると、undefinedとして表示されました。

JQuery(jquery.com)を使用していることがわかっている他のサイトにアクセスしようとしましたが、それらはすべて機能しますが、ここに欠けているものがありますか?

78
Tim Cosgriff

変数を定義するときは、変数の前に「var」を記述します。 IE8は、「var」がないと死にます。

42
asd

補正:

スクリプトのincludeタグを確認してください。

type="application/javascript" src="/path/to/jquery" 

への変更

type="text/javascript" src="/path/to/jquery" 
39
Richard

私は同様の問題を抱えていました。 IE7互換モードで実行されているIE6、Firefox、およびIE8で動作しました。 「通常の」IE8ではそうではありません。私の解決策は、このコードをヘッダーに入れることでした

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 

IE8でjqueryが機能しない理由については不明です。

38
JeffryHouser

解決策は、jQueryの最新バージョンにアップグレードすることです。私はまったく同じ問題を抱えていて1.4.2にアップグレードしましたが、IE8でもすべて正常に動作します。

私が行ったjQuery 1.3.2のすべてと完全に後方互換性があるようですので、ここで苦情はありません!

12

私はこの問題を抱えており、ここで言及した解決策を試してみましたが、成功しませんでした。

最終的に、http URLを使用してGoogle CDNバージョンのスクリプトにリンクしているのに、スクリプトを埋め込むページはhttps pageであることに気付きました。

これにより、すなわちがjqueryをロードしませんでした(安全なコンテンツのみをロードするかどうかをユーザーに確認します)。 Google CDN URLを変更してhttpsスキームを使用すると、問題が解決しました。

10
sheltond

この投稿に出くわした人の中には、jQuery v2を使用しているため、jqueryとIE8でこの問題が発生する場合があります。このコードを使用してください:

<!--[if lt IE 9]>
    <script src="jquery-1.9.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="jquery-2.0.0.js"></script>
<!--<![endif]-->
8
stuartdotnet

jQueryはロードされていません。これはおそらくIE8に固有のものではありません。 jQueryインクルードのパスを確認してください。ステートメント。さらに良いことに、CDNに以下を使用します。

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">
</script>
6
cgp

サイトでHTTPSを使用している場合は、代わりにGoogleのhttpsサーバーからjQueryライブラリをロードする必要があります。これを試してください: https://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js (または最新の https://ajax.googleapis.com /ajax/libs/jquery/1.5.1/jquery.min.js

6
lhoess

Doctypeを含めるのを忘れたsomebodyによって作成されたテンプレートを修正しました。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

doctypeを宣言しないと、IE8はQuirksモードで奇妙なことをします。

5
Hone Watson

Jqueryがロードされていないため、エラーObject expectedが発生します。これは、外部のJavaScriptソースコードの実行を許可しないブラウザセキュリティ(通常はIE)が原因で発生します。この問題は次の方法で修正できます。

  • 1:ブラウザのセキュリティレベルを変更して、外部JavaScriptコードを実行できるようにします。 ここでこれを行う方法 を見つけることができます

OR

  • 2:jqueryソースコードをWebページにコピーアンドペーストして、外部スクリプトと見なされないようにします。

私は最初の解決策を好みます。

4
zelmarou

Onloadイベントは、IE7/8 in <head> ... </head>で常に機能するとは限りません。

以下のように、タグの前のページの最後にonloadスクリプトを追加することにより、強制的に実行できます。

  <script>
    window.onload();
  </script>
</body>
4
Andy Piddock

これによりIE8の問題が修正されました。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>

Localhostで実行して、https://http://に変更する必要がありました

セキュリティで保護されたリンクを参照しようとすると、Internet ExplorerではWebページを表示できませんフレンドリーな警告が表示されます。

問題がある場合は、まずテキストスクリプトをブラウザに読み込むようにしてください!

2
lenny

同じ問題がありました。

IE8がSRC URLに到達するように正しく構成されていないことを確認して解決しました。

これを変更しましたが、正しく機能します。

2
Cristiano

たぶん、あなたは2つのスクリプトを挿入します、それは動作するはずです。

<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE8.js"></script>  
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">/script> 
2
Vadim Sluzky

同じ問題がありました。解決策は、リンクをIEの信頼済みサイトとしてJQueryファイルに追加することでした。

1
Carlos Blanco

inPrivate Filtering がオンになっている可能性がありますか?

1
Eduardo Molteni

私と同じ問題があると思います:

Message: Permission denied
Line: 13
Char: 27021
Code: 0
URI: http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.3.2.min.js

クロスドメイン参照のため。同じドメインでjquery.jsをホストしてみてください。

1
Vanja

私の場合の解決策は、アクセスしようとしているURLから特殊文字を取り除くことでした。そこにチルダ(〜)とパーセント記号があり、$。get()呼び出しは黙って失敗しました。

0
jorisw

OK! jQueryがロードされていることを知っています。 jQuery.textshadow.jsが読み込まれていることを知っています。 Developer Toolsで両方のスクリプトを見つけることができます。

奇妙な部分:このコードはコンテンツ領域で機能していますが、バナーでは機能していません。専用のfixIE.cssでも。そして、私はCSSをインラインに配置すると動作します。 (もちろん、FireFoxを台無しにします。)

運が悪ければ、バナーのテキストフィールドの周りに条件付きIEスパンを配置しました。

jquery-1.4.2.min.jsjquery-1.2.6.min.jsの両方に違いはなく、同じエラーがありました。 jquery.textshadow.jsは、この問題の解決策を見つけようとしてjQueryサイトからダウンロードされました。

これはウェブサイトに投稿されていません

0
Kyle

要するに、IE8の解析エンジンが原因です。

Microsoftが新しいHTML5タグ(「セクション」など)の操作に問題を抱えている理由を推測してください。これは、MSが他の世界のように通常のXML解析を使用しないと決定したためです。はい、そうです-彼らはXMLで大量のプロパガンダを行いましたが、最終的には、「既知のタグ」を探して何か新しいものが来たときに物事を台無しにする「愚かな」解析エンジンに頼ります。

IE8とjloadの「load」、「get」、「post」に関する問題についても同じことが言えます。繰り返しになりますが、Microsoftはバージョン8で「独自の道を歩む」ことを決定しました。IE9でこれを解決(d)できることを期待して、唯一の選択肢は<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />でIE7解析にフォールバックすることです。

まあ...マイクロソフトがフォーラムに再び投稿したことは驚くべきことです。 ;)

0
e-sushi