存储lesson_location时未终止的字符串文字错误

时间:2013-11-07 14:17:33

标签: eval reload scorm1.2

我有这个错误,但没有说明问题是什么:

我正在尝试将此字符串存储在lesson_location字段中:

B^$eNrT0srLywNiLRANpiAsMAknoMKognlwdUi6ERrQuDARmCwmE2EMslOQ9aFaguw6dKyllQxhJcNp TFBTk1iSWhBvYBhvYGAKABXXVRI&#3d;

但它会抛出SyntaxError:unterminated string literal

当我修改了重新加载将数据存储在ReloadAPIAdaptor.js中的方式

在整个字符串上使用eval

eval("this.cmi.core.lesson_location.cmivalue =\"B^$eNrT0srLywNiLRANpiAsMAknoMKognlwdUi6ERrQuDARmCwmE2EMslOQ9aFaguw6dAzXnJwMozFB TU1ual4pAMimU3Q&#3d;\";");

首先评估对象:

var o = eval("this." + element);
console.log("o",o);
if(o) o.cmivalue = value;

然后它会毫无错误地存储数据,

现在我无法修改任何lms中的代码,所以这只是为了识别字符串是否无法存储但是可以。只是邪恶不起作用所以问题是eval不喜欢的给定字符串中的内容以及如何修复它。

1 个答案:

答案 0 :(得分:0)

如果您正在执行以下操作,那么您的字符串没有任何问题:

API.SetValue("cmi.core.lesson_location", "B^$eNrT0srLywNiLRANpiAsMAknoMKognlwdUi6ERrQuDARmCwmE2EMslOQ9aFaguw6dKyllQxhJcNp TFBTk1iSWhBvYBhvYGAKABXXVRI&#3d;");

(其中API是对窗口API对象的引用)

就SCORM而言,字符串有效,长度在可接受的字符限制范围内。

如果您遇到问题,则可能是重新加载包装中的错误。坦率地说,Reload包装器中的代码(在SourceForge上找到)已有十年了。它使用eval()和其他已被识别为有问题的JavaScript技术,并且被领先的JavaScript开发人员强烈反对。您的错误很可能与包装使用eval()

有关

我尝试使用不同的包装器,看看它是否有所作为。