Internet explorer 8 权限被拒绝org.ajax.4jsf.framework.ajax.ajaxscript.jsf+;IE8

Internet explorer 8 权限被拒绝org.ajax.4jsf.framework.ajax.ajaxscript.jsf+;IE8,internet-explorer-8,permissions,ajax4jsf,Internet Explorer 8,Permissions,Ajax4jsf,我们的web应用程序(JSF1.2+Ajax4JSF1.1)出现问题 **Message: Permission denied Line: 27 Char: 222 Code: 0 URI: http://uat.example.com/ABC/a4j.res/org.ajax4jsf.framework.ajax.AjaxScript.jsf** 这个问题是偶发的,50%的时候都会发生。 只在IE8上发生在所有其他浏览器中,我们看不到这个问题。 出现此错误时,整页空白。然而,刷新会使页面返回

我们的web应用程序(JSF1.2+Ajax4JSF1.1)出现问题

**Message: Permission denied
Line: 27
Char: 222
Code: 0
URI: http://uat.example.com/ABC/a4j.res/org.ajax4jsf.framework.ajax.AjaxScript.jsf**
这个问题是偶发的,50%的时候都会发生。 只在IE8上发生在所有其他浏览器中,我们看不到这个问题。 出现此错误时,整页空白。然而,刷新会使页面返回

我们确实读了几篇关于IE怪癖与标准模式的文章。 没有帮助

注意:这不是跨站点脚本问题,因为脚本(由JSF生成)所在的域与安装我们的应用程序的域相同

请告诉我们是否有人解决了这个问题。 我看到一个类似的问题,有人在

找到了问题的修复方法。通过修改ajax4jsf-1.1.0.jar进行修复

根本原因:在IE-8的情况下,响应是从Ajax对象获取的,尽管响应尚未读取。因此,我们通过检查status==200和readystate=4为IE添加了修复

这就是我们所做的 打开jar中\org\ajax4jsf\framework\AJAX\scripts\AJAX.js下的AJAX.js

第一步。 更改为:

getResponseText:function(){
返回此。\u request.responseText;
}
致:

getResponseText:function(){
if(this.\u request.readyState==4){
if(this.\u request.status==200){
返回此。\u request.responseText;
}
}
}
第二步。查找此方法并进行更改 发件人:

window.setTimeout(函数(){
var isDocOpen=false;
//这个函数还有几行,我没有在这里粘贴所有代码。。。
改为:

//这是IE的修复……isIE变量是在脚本中预定义的。
如果(isIE){
如果(req.readyState==4){
如果(请求状态==200){
window.document.open(req.getContentType(),true);
isDocOpen=真;
window.document.write(req.getResponseText());
window.document.close();
}
}
} 
否则{
//这是原始代码。。。
//为所有其他浏览器保留此内容。。。
window.document.open(req.getContentType(),true);
isDocOpen=真;
window.document.write(req.getResponseText());
window.document.close();
}
……代码的其余部分应与原始脚本相同

步骤3:

//注释掉这个原始代码。不确定为什么要为IE重新加载
//这导致IE发送请求…不止一次。。
//如果(isIE){
/对于Ie,页面上的脚本未激活。
//window.location.reload(false);
//}
完成上述更改后,我们使用win-rar并将Ajax.js文件放回ajax4jsf-1.1.0.jar,现在IE 8的难题得到了解决

希望它能帮助其他人