我有这个错误,但没有说明问题是什么:
我正在尝试将此字符串存储在lesson_location字段中:
B^$eNrT0srLywNiLRANpiAsMAknoMKognlwdUi6ERrQuDARmCwmE2EMslOQ9aFaguw6dKyllQxhJcNp TFBTk1iSWhBvYBhvYGAKABXXVRId;
但它会抛出SyntaxError:unterminated string literal
当我修改了重新加载将数据存储在ReloadAPIAdaptor.js中的方式
在整个字符串上使用eval
:
eval("this.cmi.core.lesson_location.cmivalue =\"B^$eNrT0srLywNiLRANpiAsMAknoMKognlwdUi6ERrQuDARmCwmE2EMslOQ9aFaguw6dAzXnJwMozFB TU1ual4pAMimU3Qd;\";");
首先评估对象:
var o = eval("this." + element);
console.log("o",o);
if(o) o.cmivalue = value;
然后它会毫无错误地存储数据,
现在我无法修改任何lms中的代码,所以这只是为了识别字符串是否无法存储但是可以。只是邪恶不起作用所以问题是eval不喜欢的给定字符串中的内容以及如何修复它。
答案 0 :(得分:0)
如果您正在执行以下操作,那么您的字符串没有任何问题:
API.SetValue("cmi.core.lesson_location", "B^$eNrT0srLywNiLRANpiAsMAknoMKognlwdUi6ERrQuDARmCwmE2EMslOQ9aFaguw6dKyllQxhJcNp TFBTk1iSWhBvYBhvYGAKABXXVRId;");
(其中API
是对窗口API
对象的引用)
就SCORM而言,字符串有效,长度在可接受的字符限制范围内。
如果您遇到问题,则可能是重新加载包装中的错误。坦率地说,Reload包装器中的代码(在SourceForge上找到)已有十年了。它使用eval()
和其他已被识别为有问题的JavaScript技术,并且被领先的JavaScript开发人员强烈反对。您的错误很可能与包装使用eval()
。
我尝试使用不同的包装器,看看它是否有所作为。