您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> 在webbrowser中执行js语句,不能进行 多行文本的赋值,如何解决?

在webbrowser中执行js语句,不能进行 多行文本的赋值,如何解决?

来源:网络整理     时间:2016/8/30 2:18:13     关键词:

关于网友提出的“ 在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" 表示换行

多行文本
1
2

脚本中
1\r\n2

参考如下代码:
  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

相关图片

相关文章