OK、これは機能します:
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>
Delphiコード:
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
私の例でlib
は、htmlファイルのサブフォルダーにmarkdown.jsがあります。<script src="lib/markdown.js"></script>
それが本当にMarkdown.jsの場所を指していることを確認してください