权限被拒绝org.ajax.4jsf.framework.ajax.AjaxSxript.jsf + IE8

时间:2012-06-22 16:11:55

标签: internet-explorer-8 permissions ajax4jsf

我们的Web应用程序存在问题(JSF 1.2 + Ajax4jsf 1.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 QUIRK VS标准模式的文章。 Force IE8 Into IE7 Compatiblity Mode 没有帮助。

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

如果有人解决了这个问题,请告诉我们。 我看到一个人发布了类似的问题 http://www.coderanch.com/t/490213/JSF/java/support-IE

1 个答案:

答案 0 :(得分:1)

找到了解决问题的方法。修改了ajax4jsf-1.1.0.jar

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

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

第1步。 改变自:

    getResponseText : function(){
       return this._request.responseText;
   }

TO:

    getResponseText : function(){
    if (this._request.readyState == 4){
        if (this._request.status == 200) {
            return this._request.responseText;
        }
    }
}

步骤2.查找此方法并进行更改         FROM:

     window.setTimeout(function() {
    var isDocOpen=false;
    //This functions has few more lines , I have not pasted all code here...

更改为:

    //This is the Fix for IE....The isIE variable is pre defined inside the script.
    if (isIE){
 if (req.readyState == 4){
    if (req.status == 200) {
        window.document.open(req.getContentType(),true);
        isDocOpen=true;

        window.document.write(req.getResponseText());
        window.document.close();
    }
  }
    } 
    else {
    //This is the Original code...
    //Keep this for all other browsers...
    window.document.open(req.getContentType(),true);
     isDocOpen=true;
      window.document.write(req.getResponseText());
   window.document.close();
   }

.......其余代码应遵循原始脚本。

第3步:

    //COMMENT OUT THIS ORIGINAL CODE. Not sure why this reloading is done for IE
    //this was causing IE to send requests...more than once..   
    //if(isIE){
/ For Ie , scripts on page not activated.
//  window.location.reload(false);
//}

一旦我们进行了上述更改,我们使用win rar并将Ajax.js文件放回ajax4jsf-1.1.0.jar,现在IE 8的问题得到了解决。

希望它可以帮助那些人。