2

あるサイトのjavascriptを含むウィジェットを別のサイトに作成しました。コードは次のとおりです。

<script type="text/javascript" src="http://www.easionline.com/min/?f=widget.js"></script> 

IE9では、すべてが完全に表示されますが、IE8では、次のエラーが発生します。

Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2;
.NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0;
InfoPath.2)

Timestamp: Fri, 13 Jul 2012 07:20:30 UTC

Message: Access is denied.

Line: 7
Char: 73
Code: 0
URI: http://www.easionline.com/min/?f=widget.js

IE8がメッセージ拒否の問題を私に与える理由を誰かが知っていますか?ウィジェットが実装されているサイトを見たい場合は、http://www.ham.co.zaにアクセスしてください。

縮小せずに実行した場合:

<script type="text/javascript" src="http://www.easionline.com/widget.js"></script> 

このエラーが発生します:

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2;
.NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0;
InfoPath.2)

Timestamp: Fri, 13 Jul 2012 07:49:41 UTC
Message: Access is denied.

Line: 98
Char: 3
Code: 0
URI: http://www.easionline.com/widget.js

エラーのある行は次のように述べています。

96: var ajaxUrl = site_root+"ajax/widget/"+affid+"/"+category+"/"+numproducts;
97: 
98: obj.open("GET",ajaxUrl,true);
99: obj.send(null);

さまざまな理由で、このタスクではJqueryを避けていることに注意してください。つまり、質問は次のように要約されます。このajax呼び出しがIE9で機能するのに、IE8では機能しないのはなぜですか。

4

1 に答える 1

0

これで私の問題は解決しました:IEのjQueryスクリプトへのアクセスが拒否されました

基本的に、IEではXHRの代わりにXDomainRequestを使用する必要があります。だから私は交換しました:

obj=pullAjax();
  obj.onreadystatechange=function() {
    if(obj.readyState==4) {
        // etc
    }
}
obj.open("GET",ajaxUrl,true);
obj.send(null);

と:

xdr = new XDomainRequest(); 
xdr.onload=function()
{
    // etc
}
xdr.open("GET", thisUrl); 
xdr.send([data]); 

...ただし、IEの場合のみ。この特定のプロジェクトではjQueryを使用できないため、JavaScriptを使用してIEであるかどうかを検出する必要がありました。だから私はこれを使用しました:

var browserName=navigator.appName; 
if (browserName=="Microsoft Internet Explorer") ...

src: http: //www.pageresource.com/jscript/jbrowse.htm

于 2012-07-13T12:40:25.540 に答える