关于网友提出的“ 在webbrowser中执行js语句,不能进行 多行文本的赋值,如何解决?”问题疑问,本网通过在网上对“ 在webbrowser中执行js语句,不能进行 多行文本的赋值,如何解决?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 在webbrowser中执行js语句,不能进行 多行文本的赋值,如何解决?
描述: procedure TForm1.Button2Click(Sender: TObject);
var
vDocument: IHTMLDocument2;
begin
vDocument := WebBrowser1.Document as IHTMLDocument2;
if not Assigned(vDocument) then Exit;
vDocument.parentWindow.execScript(
'function $(id)'#13#10 +
'{'#13#10 +
' return document.getElementById(id);'#13#10 +
'}'#13#10 +
''#13#10 +
'$("editableDiv").focus();'#13#10 +
'$("editableDiv").innerText ="'+在这里赋值+'";'#13#10 +
'$("btnG").click();'#13#10,
'javascript');
end;
在js语句中,这个$("editableDiv").innerText,,,我试过了,只能进行单行文本的赋值,多行的不行,但是我想把数据库里面的备注赋值给 这个js变量,该怎么做啊?
(还有就是 ,如果把edit里面的文本赋值给它 就可以。如果用memo来给它赋值,,只有当memo里面只有一行文本的时候才可以,多行了就不行了,,该怎么解决啊)
我用dbmemo来显示数据库备注,,然后用dbmemo1.field.asstring;来进行赋值,但是只有当dbmemo1为一行文字的时候才可以。
我后面把文本里面的回车给替换掉了,这时候才有 一半多的文章可以赋值上去。但是我不想这样,这样的话 文章就不成样子了。
有没有好的办法,能把数据库里面的文章,完好的给赋值到这个js语句里面啊
解决方案1: 在脚本里 "\r\n" 表示换行
参考如下代码:
vDocument.parentWindow.execScript(
'function $(id)'#13#10 +
'{'#13#10 +
' return document.getElementById(id);'#13#10 +
'}'#13#10 +
''#13#10 +
'$("editableDiv").focus();'#13#10 +
'$("editableDiv").innerText ="' + StringReplace(多行文本, #13#10, '\r\n', [rfReplaceAll]) + '";'#13#10 +
'$("btnG").click();'#13#10,
'javascript');
以上介绍了“ 在webbrowser中执行js语句,不能进行 多行文本的赋值,如何解决?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3667777.html