与IE9有javascript问题的旧web应用程序

时间:2012-01-06 20:53:21

标签: javascript internet-explorer-9 frames isapi

我的一项工作职责是支持旧的在线应用程序(以ISAPI dll编写)。客户已报告一项功能不再有效。他说他在Win7上使用IE8,但我只能在Win7上复制IE9的问题。该应用程序依赖于javascript,并使用特定于IE的代码。没有使用JQuery或其他JavaScript库。它是在2002年或之后写的,需要IE 5.5或更新版本。

该应用有多个嵌套框架(是的,它是PITA)。当尝试从弹出模式窗口访问框架的内容时,似乎会发生此问题。用户单击该框架中的按钮图像,打开模态对话框窗口。用户更改该窗口中的选项并单击“确定”按钮。此时,应将更改发送到服务器并更新帧。但是这没有发生,并且没有向用户显示错误以提供提示。

这个应用程序的作者创建了一个调试模式,它在一个单独的浏览器窗口中记录一堆消息。我添加了一些额外的调试语句并缩小了问题范围。这是记录的错误文本:

[SERV REQ #13] requesting fraUOMTraces=/isapi/dataminer.dll/UOMTraceList?sfn=220333606&sfn=220333606&UOM=1&TdmUserHierarchy_cdsStats_SmoothTime=1800&TdmUserHierarchy_cdsStats_SmoothType=Boxcar&TdmUserHierarchy_cdsStats_SmoothMinMax=avg
*-* RequestDocument oReq.Request: /UOMTraceList (13)
*** ERROR *************************************************
Error while retrieving oDoc (13)!
Number = -2146828218
Description = Permission denied
Name = TypeError
Message = Permission denied
***********************************************************

'fraUOMTraces'是框架的名称。第一行是应该发送到服务器的请求。 'oReq'是一个自定义的javascript对象('RequestObj'),它包含大量有关服务器请求的详细信息。

Error while retrieving oDoc (13)中,'oDoc'应包含框架的文档对象。但是当尝试从oReq对象检索该属性时,会生成“权限被拒绝”错误。以下是发生这种情况的代码:

this.RequestDocument    = function(oReq){
    var oDoc    = null;
    DebugText("*-* RequestDocument oReq.Request: " + oReq.Request + " (" + oReq.RequestID + ")");
    try{
        //== try to get the document for this request
        oDoc = oReq.Destination.document;
        //== Now try to get the document if we are in a frame
        oDoc = oReq.Destination.contentWindow.document;
    }catch(err){
        //== No big deal, this happens if we are not in a frame
        if(oDoc == null) {
            DebugError("Error while retrieving oDoc (" + oReq.RequestID + ")!", err);
        }
    }
    return oDoc;
}

关于在这种情况下会导致“权限被拒绝”错误的任何想法?我已经摆弄了各种IE选项/设置,但却找不到任何影响问题的方法。此错误不会显示在XP / IE8或带有IE8的同事Win7上。

如果你通过这条长信息做了这件事并且好奇地想要解决这个问题,我可以给你一个指向该应用程序和“访客”凭据的链接,以便查看它的实际效果。

-Dave

0 个答案:

没有答案