我在网上查看过很多答案和其他地方,但我没有发现任何人以与我相同的方式遇到错误。
我的浏览器刚刚更新到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/';
}
}
答案 0 :(得分:1)
该代码充满了古老的IE特定代码,即使是IE,也可能不允许这样做,除非在兼容模式下。您应该考虑更换以下内容:
document.frames
document.all
.items()
我相信错误的发生是因为frames
或item
(可能两者)在IE遵循JS标准时不是函数。
答案 1 :(得分:0)
我在2005年写回的Java脚本遇到了类似的问题。使用IE10的外部用户,我们仍然回到IE8,无法正常工作。看来document.all已被弃用,并且只能在兼容模式下访问。我删除了我对IE的检查,所以它现在使用了我已经用于其他浏览器的document.getElementById,即使关闭了兼容模式,它似乎也能正常工作。