【问题标题】:Some Javascript errors on IE8 compatibility mode on IE11 windows 8IE11 windows 8 上 IE8 兼容模式的一些 Javascript 错误
【发布时间】:2017-02-12 10:41:02
【问题描述】:

我正在尝试将在 Windows XP/IE8 上实际运行的 web 应用迁移到在 Windows 8/IE11 下运行。当我尝试在 IE8 兼容模式下在此系统上进行测试时,我收到以下错误:

SCRIPT5: The system cannot locate the resource specified. File:webservice.js, 
Line: 498, Column: 4 HTML1300: Navigation occurred.
File: DesktopWindow.aspx 
SCRIPT450: Wrong number of arguments or invalid property assignment File: operation.js, 
Line: 1849, Column: 3 SCRIPT5007: Unable to get property 'childNodes'
of undefined or null reference File: DesktopWindow.aspx,
Line: 100, Column: 5 SCRIPT450: Wrong number of arguments or invalid
property assignment File: DesktopWindow.aspx, Line: 1881, Column: 4

我在 W XP 和 IE8 上没有问题。此应用必须在两种操作系统上都能运行。

operation.js 失败代码:

for(j = 0; j < iNumData; j++)
{
    id = sIDs.getItem(j);
    value = top.AQContextArea(id);

    //Inform the AQDataArray with the values of the scripting dictionary, creating two copies
    //one for context area "G" an other for context area "F"

    res = objCA.InsertAQData1(operationID, id, value);

}   

DesktopWindow.aspx 失败代码:

function CargarListaPaginasNombresEstaticos()
        {   
            var serverName = top.GetAQData("G","SERVER_NAME");
            var xmlFolder = "AMTAConfig";
            var sXMLFileName = "http://" + serverName + "/" + xmlFolder + "/NombresEstaticosPaginas.xml";

            //var xmlDoc;
            var root;
            var nodos;
            var nodo;
            var nodos2;
            var nodo2;
            var nombre;
            var valor;

            xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
            xmlDoc.async = false;
            xmlDoc.onreadystatechange=verifyState;
            xmlDoc.load(sXMLFileName);

            root = xmlDoc.documentElement;
            nodos = root.childNodes;

            for (var i = 0; i < nodos.length; i++)
            {
                nodo = nodos.item(i);
                nodos2 = nodo.childNodes;

                for (var j = 0; j < nodos2.length; j++)
                {
                    nodo2 = nodos2.item(j);
                    if (nodo2.nodeName=="NombrePagina"){
                        nombre = nodo2.text;
                    }
                    if (nodo2.nodeName=="TituloPagina"){
                        valor = nodo2.text;
                    }                   
                }
                top.PaginasEstaticas.Add(nombre, valor);
            }
            return 0;
        }

【问题讨论】:

  • 到目前为止你做了哪些调试?
  • 抱歉我已经添加了代码

标签: javascript asp.net internet-explorer


【解决方案1】:

我解决了这个问题,改变了访问 Scripting.Dictionary 的方式。我使用使用 IDictionary 键和 IDictionary Items 构造的两个 VBArray 对象来获取值。 IE 不再兼容使用 key 访问 value 的旧方式

这是失败的代码:

function LoadAQData()
{
var sIDs;
var iNumData;
var id;
var value;
var contextarea;
var operationID = "DWI";
var res="";
//throw(0);
//Dump AQ data defined in the scripting dictionary in the desktop window in an array
sIDs = (new VBArray(top.AQContextArea.Keys()));     
iNumData = top.AQContextArea.Count;

for(j = 0; j < iNumData; j++)
{
    id = sIDs.getItem(j);
    value = top.AQContextArea(id);

    //Inform the AQDataArray with the values of the scripting dictionary, creating two copies
    //one for context area "G" an other for context area "F"

    res = objCA.InsertAQData1(operationID, id, value);

}   

}

这是解决方案:

function LoadAQData()
{
var sIDs;
var iNumData;
var id;
var value;
var contextarea;
var operationID = "DWI";
var res="";
//throw(0);
//Dump AQ data defined in the scripting dictionary in the desktop window in an array
sIDs = (new VBArray(top.AQContextArea.Keys()));
ItemsArray = (new VBArray(top.AQContextArea.Items()));  
iNumData = top.AQContextArea.Count;

for(j = 0; j < iNumData; j++)
{
    id = sIDs.getItem(j);
    value = ItemsArray.getItem(j);
    //Inform the AQDataArray with the values of the scripting dictionary, creating two copies
    //one for context area "G" an other for context area "F"

    res = objCA.InsertAQData1(operationID, id, value);

}   

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多