如何让markdown.js在Delphi的TWebBrowser中将标记文档显示为HTML?
给定包含Markdown的字符串的内容,如何让markdown.js将该markdown转换为HTML,并在我的Delphi桌面应用程序中的TWebBrowser组件中显示该HTML?
更新:
按照Wouter的例子(谢谢你,Wouter!),如果我只是这样做:
procedure TForm2.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('file://C:/junk/markdown/lib/markdown.js');
end;
Run Code Online (Sandbox Code Playgroud)
然后我收到一系列警告.首先,从Windows"保护"我的javascript.我批准并运行一切,但最后我得到:

Wou*_*ick 14
好的,这有效:

HTML:
<!DOCTYPE html>
<html>
<head><style>body{font-family:Arial;font-size:small}</style></head>
<body>
<div id="markdown"></div>
<input type="hidden" id="hidden" />
<script type="text/javascript">
hiddenEl=document.getElementById('hidden');
markdownEl=document.getElementById('markdown');
</script>
<script src="lib/markdown.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
德尔福代码:
procedure TForm38.Memo1Change(Sender: TObject);
begin
WebBrowser1.OleObject.Document.GetElementByID('hidden').setAttribute('value', Memo1.Text);
WebBrowser1.OleObject.Document.ParentWindow.execScript('markdownEl.innerHTML = markdown.toHTML(hiddenEl.value)');
end;
procedure TForm38.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('file://c:/!/markdown.html');
end;
Run Code Online (Sandbox Code Playgroud)
当然,这只是一个概念证明.特别是Delphi代码应该检查文档是否已加载,但是这种类型的代码只会分散这个例子的注意力.
也许您想知道为什么我首先将TMemo的内容写入隐藏元素?这是因为当您将JavaScript构建为字符串时,将带有换行符的文本传递给JavaScript函数会很复杂.你会得到这样的东西:
window.alert("Hello
World");
Run Code Online (Sandbox Code Playgroud)
更新
在我的示例中,我lib在html文件的子文件夹中有markdown.js .确保<script src="lib/markdown.js"></script>真正指向Markdown.js的位置
| 归档时间: |
|
| 查看次数: |
935 次 |
| 最近记录: |