0

私は何週間も KineticJS を使用してプロジェクトに取り組んできましたが、問題はありません。ほんの数分前に、ページをビルドしてデバッグするときにエラーが発生し始めました。

これはエラーです: /scripts/kinetic-v4.0.3.js の行 2258、列 13 で未処理の例外が発生しました

0x800a01b6 - Microsoft JScript ランタイム エラー: オブジェクトはプロパティまたはメソッド 'indexOf' をサポートしていません

何が起こっているのかわかりません。どのプロジェクトのKineticJSを使用するページでも発生します...

フォルダーからすぐにFirefoxでページを開くことができ、すべてが正常に機能します。

何か案は?

4

2 に答える 2

3

古い IE ブラウザを使用していますか? indexOf メソッドは IE6 または IE7 ではサポートされていません (どちらもキャンバスではありません)。

于 2012-10-31T06:31:00.743 に答える
2

Microsoft の Internet Explorer の最大の顧客ベースは企業です。企業は、IE の古いバージョン用のイントラネット アプリケーションを作成するために無数のお金と時間を投資してきました。これは、より新しい、またはより標準に準拠したバージョンでは機能しなくなります。したがって、ローカル イントラネット ゾーンで検出された Web サイトの場合、IE は既定で互換モードになり、IE9 が IE7 のように動作します。

Localhost は、デフォルトでたまたまローカル イントラネットになっています。これが、IE9 を使用しているにもかかわらず、Visual Studio から F5 でデバッグするときに、新しい JavaScript オブジェクトとメソッドを使用できない理由であると考えられます。

幸いなことに、できることがいくつかあります。アプリ開発者にとって最も簡単な方法は、ページ ヘッダーにメタ タグを含めて、そのページをレンダリングするときに互換モードを無視するように IE に指示することです。

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

推奨されるアプローチは、おそらく、Web サーバーがその Web アプリケーションのすべての HTTP 応答にこのヘッダーを含めることです。それを行うように IIS を構成するか、web.config に以下を含めます (IIS7+ の場合、私は信じています)。

<system.webServer>
   <httpProtocol>
      <customHeaders>
         <remove name="X-UA-Compatible"/>
         <add name="X-UA-Compatible" value="IE=Edge" />
      </customHeaders>
   </httpProtocol>
</system.webServer>
于 2012-11-08T20:27:48.963 に答える