Javascript - Script5002 - 函数在声明变量时需要

时间:2013-04-04 02:20:27

标签: javascript internet-explorer-10

我在网上查看过很多答案和其他地方,但我没有发现任何人以与我相同的方式遇到错误。

我的浏览器刚刚更新到IE10,这引起了我们的注意。如果我在兼容模式下运行,该功能似乎工作正常。如果我不处于兼容模式,我会收到IE调试器错误SCRIPT5002 - 功能预期错误。

我已经用==>标记了我收到错误的地方。如果我取出该变量并将该变量替换为document.frames ...则将该行引用为问题。任何帮助将不胜感激。

我从以前的员工那里继承了这段代码,并且只使用了javascript约3个月。这是代码:

function FncSaveClient(){
//Submit Primary Client form
//Verify Data
==> var CntSumFrm = document.frames('IFrameSummary').document.all.item('DefaultFrm');
if (CntSumFrm.fireEvent('onsubmit') == true){
    CntSumFrm.submit();
}
//If Edit Mode Submit Subforms
var IntAcctNum = CntSumFrm.TxtAcctNum.value
if (IntAcctNum != 0){
    //Locations Subform
    var CntLocFrm = document.frames('IFrameLocations').document.all.item('DefaultFrm');
    if (CntLocFrm.fireEvent('onsubmit') == true){
          CntLocFrm.submit();
      }
    //Contacts Subform
    var CntContactTbl = document.frames('IFrameContacts').document.all.item('TblContactSummary')
if (CntContactTbl.rows.length-3 == 0){
        alert('You must have at least one contact per client.');
    document.all.item('BtnSubTblClientContacts').style.color='red';
    }
    //Classification Subform
    var CntClassFrm = document.frames('IFrameMarketing').document.frames('IFrameClassification').document.all.item('DefaultFrm');
    if (CntClassFrm.fireEvent('onsubmit') == true){
        CntClassFrm.submit();
      }
    //Save Client Admin
    var CntAdminFrm = document.frames('IFrameAdmin').document.all.item('DefaultFrm');
    if (CntAdminFrm.fireEvent('onsubmit') == true){
    CntAdminFrm.submit();
}
else
{
    document.all.item('BtnSubTblSalesRel').style.color='red';
}   
}

if(CntSumFrm.TxtDeleted.value == 1)
    {
    window.parent.location.href = '/Accounts/';
    }
}

2 个答案:

答案 0 :(得分:1)

该代码充满了古老的IE特定代码,即使是IE,也可能不允许这样做,除非在兼容模式下。您应该考虑更换以下内容:

  • document.frames
  • document.all
  • .items()

我相信错误的发生是因为framesitem(可能两者)在IE遵循JS标准时不是函数。

答案 1 :(得分:0)

我在2005年写回的Java脚本遇到了类似的问题。使用IE10的外部用户,我们仍然回到IE8,无法正常工作。看来document.all已被弃用,并且只能在兼容模式下访问。我删除了我对IE的检查,所以它现在使用了我已经用于其他浏览器的document.getElementById,即使关闭了兼容模式,它似乎也能正常工作。