SCRIPT5: Access is Denied issue in IE9 に関する他の記事をかなり読んだことがありますが、私が知る限り、これは少し異なり、なぜそれが起こっているのか正確にはわかりません。
この状況は、標準の 2011 テーマを使用してインストールされた Wordpress 3.4.1 で発生しました。次の関数を使用してスクリプトをキューに入れました。
function my_scripts(){
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js',null,null,true);
wp_register_script('cycle', 'http://ajax.microsoft.com/ajax/jquery.cycle/2.88/jquery.cycle.all.js',null,null,true);
wp_register_script('plugin', get_stylesheet_directory_uri() . '/scripts/plugin-init.js',null,null,true);
wp_enqueue_script('jquery');
wp_enqueue_script('cycle');
wp_enqueue_script('plugin');
}
最初にjquery
、cycle
スクリプトは両方とも CDN から取得されます。単一要素に対する基本的な呼び出しを除いて、plugin
スクリプトは空です。cycle
この時点で、IE9 を除くすべてのブラウザが正常に動作しました。次のエラーを受け取りました。
SCRIPT5: Access is denied
jquery.min.js, line 2 character 68522
これがクロスオリジンの問題であることがすぐにわかりました。
IE 上の jQuery スクリプトへのアクセスが拒否されました
SCRIPT5: xmlhttprequest で IE9 でアクセスが拒否される
私のプラグインにはクロスオリジン機能がなかったので、これは奇妙だと思いました。また、問題はjquery
私のコードではなく、それ自体に現れていました。いくつかの提案された修正を試みましたが、うまくいきませんでした。
基本的なものをいくつか試しました。スクリプトを直接フッターに移動しました。ヘッダーに直接移動しようとしました。私のスクリプトを方程式から切り離してみました。この時点で髪を引っ張ります。
私の最善の策は、コードのエラーの原因を実際に確認することでした(縮小版ではできなかったため)。この時点で、コードはヘッダーに直接含まれていたため.min
、スクリプトから を削除し、更新を行いました。TA-DA: すべてが問題なく動作するようになりました。
&my_scripts()
を使用して、縮小されていないスクリプト宣言を関数に戻そうとすると、再び失敗します。縮小されていないスクリプト宣言をフッターに移動しようとすると、再び失敗します。当時、ローカル コピーはテストせず、CDN バージョンのみをテストしました。wp_register_script
wp_enqueue_script
これは同じ SCRIPT5 エラーですが、残念ながら、エラーが生成されているコードが手元にありません。これは先日オフィスにあったもので、週末は休みです。個人のサンドボックスでイベントを再現しようとしましたが、エラーを再現できませんでした。
ここで何が起こっているのか誰にも分かりませんか?jquery.min
縮小されていないファイルが失敗しないのはなぜですか? また、縮小されていないファイルが直接にない限り、なぜ失敗し続けるの<head>
でしょうか?
来週仕事に戻るまで待たなければならないものもありますが、さらに情報を提供できることを嬉しく思います. できるだけ早く、残りのコードを投稿しようとします。