我不是Asp.Net开发人员,但我碰巧在代码库的JavaScript方面工作,其中也有一些简单的Asp.Net。我需要在设置JavaScript对象属性之前转义动态文本:
Text: '<% =_serviceMessageText %>'
我尝试使用HttpUtility.JavaScriptStringEncode
但它没有用,实际上并没有真正得到我应该从中得到的东西。我想知道是否有任何简单的方法来逃避单引号,可能避免使用正则表达式。
注意:实际文本已经编码,因此单引号存储为'
,但检索时表示为实际单引号字符,导致JavaScript解析错误。
更新
也许我应该将JavaScript更改为:
Text: "<% =_serviceMessageText %>"
并使用Server.HTMLEncode
来避免双引号?
答案 0 :(得分:1)
是的,你是对的;使用双引号var urls = [
'yufegi.jpg',
'duck.jpg'
];
var images = [];
var counter = 0;
// From http://stackoverflow.com/questions/6150289/how-to-convert-image-into-base64-string-using-javascript
function convertImgToBase64URL(url, callback, outputFormat){
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function(){
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'), dataURL;
canvas.height = this.height;
canvas.width = this.width;
ctx.drawImage(this, 0, 0);
dataURL = canvas.toDataURL(outputFormat);
callback(dataURL, url);
canvas = null;
};
img.src = url;
}
function createArchive(images){
// Use jszip
var zip = new JSZip();
var img = zip.folder("images");
for (var i=0; i<images.length; i++) {
img.file(images[i].url, images[i].data, {base64: true});
}
var content = zip.generate({type:"blob"});
// Use FileSaver.js
saveAs(content, "images.zip");
}
for (var i = 0; i<urls.length; i++) {
convertImgToBase64URL(urls[i], function (base64Img, url) {
images.push({
url: url,
data: base64Img
});
counter++;
if (counter == urls.length) {
createArchive(images);
}
});
}
来转义/分隔服务器端字符串,单引号应该用于分隔客户端字符串。应该是
""