如何让 markdown.js 在 Delphi 的 TWebBrowser 中将 Markdown 文档显示为 HTML?
给定包含 Markdown 的字符串的内容,如何让 markdown.js 将该 markdown 转换为 HTML,并在 TWebBrowser 组件中显示该 HTML,所有这些都在我的 Delphi 桌面应用程序中?
UPDATE:
按照 Wouter 的例子(谢谢你,Wouter!),如果我简单地这样做:
procedure TForm2.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('file://C:/junk/markdown/lib/markdown.js');
end;
然后我收到一系列警告。首先,Windows“保护”我免受 JavaScript 的影响。我批准并运行一切,但最后我得到:
好的,这有效:
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>
德尔福代码:
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;
当然,这只是一个概念证明。
特别是 Delphi 代码应该检查文档是否已加载,但这种类型的代码只会分散此示例的注意力。
也许您想知道为什么我首先将 TMemo 的内容写入隐藏元素?
这是因为当您将 JavaScript 构建为字符串时,将带有换行符的文本传递给 JavaScript 函数非常复杂。你会得到这样的东西:
window.alert("Hello
World");
update在我的示例中,我的子文件夹中有 markdown.jslib
html 文件的。
确保<script src="lib/markdown.js"></script>
真正指向Markdown.js的位置
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)