1

WordPressで動作するウェブサイトがあります。このサイトはいくつかのJavaScriptコンポーネントを使用しています。最も注目すべきは、ホームページのスライド、スケジュール、およびお問い合わせフォームです。すべての機能は、Chrome、Firefox、およびその他の優れたブラウザで期待どおりに機能しますが、IEでは機能しません。

これらの機能はすべて、JavaScriptに表示される問題が原因で機能しなくなります。以下に起こっていることのいくつかのサンプルを含めました:

IEデバッグコンソールのエラー: "SCRIPT1006:Expected:')' --modernizr.foundation.js?ver = 3.4.2、line 4 character 94"

m.join(a";")(b||"")

サーバー上の実際のファイル:

m.join(a+";")(b||"")

IEデバッグコンソールのエラー: "SCRIPT1006:Expected:')' --jquery.js?ver = 1.7.2、line 2 character 148"

d=f("<"">")

サーバー上の実際のファイル:

d=f("<"+a+">")

それらはすべて、この欠落した文字のパターンに従います(ほとんどの場合「+」記号)。私はInternetExplorerでこの問題を引き起こす原因について完全に混乱しており、何が起こっているのか、そしてそれを修正する方法を知って安心します。

4

3 に答える 3

3

これは、.js ファイルを提供する方法に関係しています。特にあなたのmodernizrは、次のように持ち込んでいます:

<script type='text/javascript' src='http://rowbotfitness.com/wp-content/themes/businesspro/core/library/js/foundation/modernizr.foundation.js?ver=3.4.2'></script>

(ちなみに、あなたは多くの JS と CSS ファイルを持っています。それらを組み合わせることができればもっと良いでしょう。ロード順も少し疑わしいですが、それは主な問題ではありません)

単純に URL にアクセスする場合:

http://rowbotfitness.com/wp-content/themes/businesspro/core/library/js/foundation/modernizr.foundation.js

...Firefox で Firebug コンソールに表示されるエラーを確認すると、IE で問題を引き起こしているエラーが表示されます。

プレーン テキスト ドキュメントの文字エンコーディングが宣言されていません。ドキュメントに US-ASCII 範囲外の文字が含まれている場合、一部のブラウザー構成では、ドキュメントが文字化けしてレンダリングされます。ファイルの文字エンコーディングは、転送プロトコルで宣言する必要があります。または、ファイルはエンコーディング シグネチャとしてバイト オーダー マークを使用する必要があります。

何がその JS ファイルを生成しているのか (?ver=3.4.2 を使用) はわかりませんが、JS ファイルに直接リンクしてから、Web サーバー ソフトウェアで正しい MIME タイプを設定することをお勧めします。それに関する StackOverflow の議論については、こちらを参照してください。

Javascript MIME タイプ

于 2012-11-28T13:41:27.210 に答える
0

HTMLが無効であり、これが予期しない動作を引き起こしています。

最初の問題は次のとおりです

<!-- an if list.. -->
<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]-->
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en-US">

結果として2つ<html>の要素が生成され、そのうちの2つ目はDOCTYPEとは異なる解析動作を定義します(予期しない2つ目のタグは、現在、癖になっていることを意味するため)。これが修正されると、他のエラーメッセージがより意味のあるものになるはずです。

さらに、 .jsファイルを使用して文字セットデータを送信していませんが、ページには文字セットが定義されており( utf-8)、これによりエンコードの競合が発生する可能性があります。

于 2012-11-28T14:40:40.813 に答える
0

それに関する2つのアイデア:

  • エンコーディングが一致しません!すべてのファイルが同じエンコーディングを共有しており、Web サーバーが配信しようとしているエンコーディングと一致していることを確認しますか?

  • CariageReturn または LineFeed を含む可能性のある変数がないことを確認してください。これらの効果が発生する可能性があるデータベースから来る。これにより、ソースコードがスクランブルされ、上記のような効果が生じる可能性があります。

于 2012-11-28T13:38:32.057 に答える