Delphi 无法在字符串中使用撇号

Delphi 无法在字符串中使用撇号,delphi,delphi-xe8,Delphi,Delphi Xe8,所以我花了一个小时试着让它工作。我正在TWebBrowser上做一些测试,以便将我的发现应用到一个项目中。我想测试将内容加载到其中的不同方式(URL、LoadFromStrings()和EvaluateJavaScript()。问题是,我无论如何都无法将一个简单的字符串传递到最后一个方法中,而不让它被错误地包含在撇号中 procedure TForm1.FormCreate(Sender:TObject); const S='<span style="color:red">ABC&l

所以我花了一个小时试着让它工作。我正在TWebBrowser上做一些测试,以便将我的发现应用到一个项目中。我想测试将内容加载到其中的不同方式(URL、LoadFromStrings()和EvaluateJavaScript()。问题是,我无论如何都无法将一个简单的字符串传递到最后一个方法中,而不让它被错误地包含在撇号中

procedure TForm1.FormCreate(Sender:TObject);
const S='<span style="color:red">ABC</span><span style="color:green">ABC</span><span style="color:blue">ABC</span>';
begin
WebBrowser1.LoadFromStrings('<html><body><div id="target">[x]</div></body></html>','');
WebBrowser1.EvaluateJavaScript('document.getElementById("target").insertAdjacentHTML('+
'"beforend",'#39+S+#39');');
end;
过程TForm1.FormCreate(发送方:TObject);
常数S='abcabc';
开始
WebBrowser1.LoadFromStrings('[x]','');
WebBrowser1.EvaluateJavaScript('document.getElementById(“target”).insertAdjacentHTML('+
"beforend","39+S+"39"),;
结束;

看到第39页了吗?如果没有它们,则发送字符串时根本没有撇号,因此生成的JavaScript脚本无效。如果它们仍然存在,我会在字符串的每一端得到两个撇号,仍然会把脚本弄乱。这是什么?

我的pshychic调试告诉我您正在调试器中查看字符串。单引号是字符串分隔符。所以它需要逃脱。它通过加倍来逃脱。因此,当调试器显示如下字符串时:

'a''b'
  Writeln('''' + S + '''');
这实际上是三个字符长,中间的字符是一个单引号

所以

输出

a'b
您是否尝试过
…insertAdjacentHTML(“beforend”,“S+”)?您是否正确转义了HTML字符串
S
文档。getElementById(“控制台”)。insertAdjacentHTML(“beforend”,“abcabc”);'从调试器中获取。即。我现在需要找到真正的问题。谢谢……不要忘记正确格式化传递给
insertAdjacentHTML
方法的HTML代码(即,转义
S
变量中需要的所有字符)。我将使用THTMLEncoding.HTML.Encode()实现这一点。顺便说一句,我发现了问题:第一个参数应该是“beforeed”。该死的打字错误。
{$APPTYPE CONSOLE}
const
  S = '<span style="color:red">ABC</span>';
begin
  Writeln(#39 + S + #39);
end.
'<span style="color:red">ABC</span>'
  Writeln('''' + S + '''');