如果我使用错误的单词,请提前道歉,但我遇到的问题与IE11有关,无法解析动态JSON密钥。它需要动态的原因是因为ID改变了环境环境。例如,我在config.js文件(缩写)中有以下内容
categories: {
clientCommon: {
get FirstName() {
var field = window.iqbg.common.staticStrings.fieldNotSetString;
switch (window.iqbg.config.getCurrentEnvironment()) {
case 'debug':
field = "65638_27";
break;
case 'dev':
field = "341840_3";
break;
}
return field;
},
get LastName() {
var field = window.iqbg.common.staticStrings.fieldNotSetString;
switch (window.iqbg.config.getCurrentEnvironment()) {
case 'debug':
field = "65638_26";
break;
case 'dev':
field = "341840_2";
break;
}
return field;
},
}
}
然后,在我的主要功能中,我利用以下代码行:
copyHHSFolders: function (firstName, lastName, clientType, dateOfBirth, callback) {
var attributes = { [config.categories.clientCommon.FirstName]: firstName,
[config.categories.clientCommon.LastName]: lastName,
[config.categories.clientCommon.DateOfBirth]: dateOfBirth };
//turns into/IE version
var attributes = { "341840_3": "Nick",
"341840_2": "P",
"341840_5": "1970-01-01" };
然后将其传递给ajax调用并执行它。在Chrome和Firefox中运行良好,但客户端是oldschool政府,只支持IE11(不是Edge,但也在那里工作)
然而,IE11在加载上述脚本时喜欢抛出javascript错误。我现在通过将实际项目置于括号内来进行手动修复,但我不希望每次修改代码并在环境之间移动时都要进行查找/替换。
有没有更好的方法来实现我的目标?注意:让我们保持简单,并说我只是使用滥用Visual Studio作为简单的文本编辑器来修改当前时间的html / js,没有像react / node / angular等那样只有jquery / bootstrap / lodash和其他一些小的帮助库。
我目前没有进行任何类型的蚁群编译来查找/替换变量(在之前的项目中做过),但也不确定这是否是解决方案,或者是否需要利用.ts而不是JS。再一次,对我对这些技术的无知感到抱歉,很难掌握这些技术。
答案 0 :(得分:0)
对于正在寻找答案的其他人来说,azium的评论引导我进行以下(下面)基本上,创建对象内联的简写不起作用。我确实采取了以下方法。
//below line not IE compatible
//var attributes = { [config.categories.clientCommon.FirstName]: firstName, [config.categories.clientCommon.LastName]: lastName, [config.categories.clientCommon.DateOfBirth]: dateOfBirth };
//however, this is
var attributes = {};
attributes[config.categories.clientCommon.FirstName] = firstName;
attributes[config.categories.clientCommon.LastName] = lastName;
attributes[config.categories.clientCommon.DateOfBirth] = dateOfBirth;