DijitのJavaScriptソースコードを確認した後、動的に生成されたIFRAMEへの「安全でない」参照が原因でエラーが発生した可能性が高いと思いました。スクリプトファイルには2つのバージョンがあり、非圧縮は元のソース(dijit.js.uncompressed.js)を表し、標準(dijit.js)は最適な転送時間のために圧縮されていることに注意してください。
非圧縮バージョンが最も読みやすいので、それに基づいて私のソリューションを説明します。行#1023で、IFRAMEがJavaScriptでレンダリングされます。
if(dojo.isIE){
var html="<iframe src='javascript:\"\"'"
+ " style='position: absolute; left: 0px; top: 0px;"
+ "z-index: -1; filter:Alpha(Opacity=\"0\");'>";
iframe = dojo.doc.createElement(html);
}else{...
どうしたの?IEは、IFRAMEのsrcが「安全」であるかどうかを知りません。そのため、次のように置き換えました。
if(dojo.isIE){
var html="<iframe src='javascript:void(0);'"
+ " style='position: absolute; left: 0px; top: 0px;"
+ "z-index: -1; filter:Alpha(Opacity=\"0\");'>";
iframe = dojo.doc.createElement(html);
}else{...
これは、IEのJavaScriptツールキットとSSLで最も一般的な問題です。DIVのオーバーレイサポートが不十分なため、IFRAMEがシムとして使用されるため、この問題は非常に一般的です。
最初の5〜10ページのリロードは問題ありませんが、その後、セキュリティエラーが再び表示され始めます。これはどのように可能ですか?同じページは5回のリロードで「安全」であり、6回目のロード時にIEによって「安全でない」として選択されます。
実は、dijit.waiのonloadイベントで設定されている背景画像もあります(行#1325)。これは次のようになります。
div.style.cssText = 'border: 1px solid;'
+ 'border-color:red green;'
+ 'position: absolute;'
+ 'height: 5px;'
+ 'top: -999px;'
+ 'background-image: url("' + dojo.moduleUrl("dojo", "resources/blank.gif") + '");';
background-imageタグにはHTTPが含まれていないため、これは機能しません。場所が相対的であるという事実にもかかわらず、IE7はそれが安全であるかどうかを知らないので、警告が出されます。
この特定の例では、このCSSは、Dojoのアクセシビリティ(A11y)をテストするために使用されます。これは私のアプリケーションがサポートするものではなく、このメソッドには他の一般的なバグのある問題があるため、dijit.waiのonload()のすべてを削除することにしました。
すべてが良いです!ページの読み込みに関する散発的なセキュリティの問題はありません。