这是c#方法和js函数:
public static string JsGetImgBase64String(Awesomium.Windows.Forms.WebControl wb, string getElementQuery, bool leaveOnlyBase64Data = true)
{
string data = wb.ExecuteJavascriptWithResult(@"
function getImgBase64String(img)
{
alert(img.attr('src'));
var cnv = document.createElement('CANVAS');
var ctx = cnv.getContext('2d');
ctx.drawImage(img, 0, 0);
return cnv.toDataURL();
}
" + String.Format("getImgBase64String({0});", getElementQuery));
if (data == "undefined")
return string.Empty;
if (leaveOnlyBase64Data && data.Contains(","))
{
data = data.Substring(data.IndexOf(",") + 1);
}
return data;
}
这是图片:
@"$(""img[src$='/Appointment/ShowCaptchaImage']"")"
以下是提醒结果:/Appointment/ShowCaptchaImage
这是该函数的结果(无错误):The return value of that function is undefiend
。
现在问题是什么?
如何使用jquery或javascript修复undefiend
问题?
string imgBase64 = JsGetImgBase64String(webControl_1, @"$(""img[src$='/Appointment/ShowCaptchaImage']"")");
byte[] imgBytes = Convert.FromBase64String(imgBase64);
我在byte[] imgBytes =
上有错误!
答案 0 :(得分:1)
tsconfig.json
是一个jquery函数。由于这有效,您可以放心地假设您正在使用jquery对象。
img.attr('src')
不接受jquery元素。
尝试使用ctx.drawImage()
代替。使用ctx.drawImage(img[0], 0, 0);
可确保获得实际的DOM元素,而不是JQuery元素。