我有一个javascript函数,它使用字符串构建器function.it正在工作(95%)所有主流浏览器,如IE8 +,chrome,firefox等。我测试了它并且工作正常,但有时候我会得到错误,如#34; stringbuilder未定义"。对于一些客户来说并非全部,我无法找到哪个浏览器和版本,所以我想知道stringbuilder功能是否适用于所有浏览器?有没有版本限制?我搜索了这个错误,但没有得到任何答案。你们遇到过类似的问题吗?请提出一些链接或方法来解决这个问题。下面是我的代码。
function GetXmlString() {
try {
var sbMain = new StringBuilder();
sbMain.append("<?xml version='1.0' encoding='UTF-16' ?>");
sbMain.append("<Application");
sbMain.append("</Application>");
}
catch (e) {
strXml = "";
//alert("Error in GetXmlString " + e.name + "\n" + e.message);
var error = "Error in GetXmlString " + e.name + "\n" + e.message
$.ajax({ type: "POST",
url: "AL_GetAjaxValue.aspx",
data: { type: "LogError", Error: "" + error + "" },
dataType: "html",
success: function(msg) {
},
error: function() {
}
});
}
}
我找到了StringBuilder的缩减。这个宣言有什么问题吗?请验证此代码。
function StringBuilder(value) {
this.strings = new Array("");
this.append(value);
}
StringBuilder.prototype.append = function(value) {
if (value) {
this.strings.push(value);
}
}
StringBuilder.prototype.clear = function() {
this.strings.length = 1;
}
StringBuilder.prototype.toString = function() {
return this.strings.join("");
}
答案 0 :(得分:0)
有趣的是,你有时会得到错误而不是其他错误。你是如何陷入这种方法的? StringBuilder不是JavaScript的原生,而是C#类。
如果您发现需要为javascript定义StringBuilder,可以这样做:
//StringBuilder class
function StringBuilder(value){
this.strings = new Array('');
this.append(value);
}
// Appends the given value to the end of this instance.
StringBuilder.prototype.append = function (value){
if (value){
this.strings.push(value);
}
}
StringBuilder.prototype.appendLine = function(value){
if(value){
this.strings.push(value);
this.strings.push("\n");
}
}
// Clears the string buffer
StringBuilder.prototype.clear = function (){
this.strings.length = 1;
}
// Converts this instance to a String.
StringBuilder.prototype.toString = function (){
return this.strings.join('');
}