API 1.4 を使用して Outlook アドインを作成br
し、Outlook 2016 コンポーザーの本文にタグを追加しようとしています。
ただし、入力を開始するとすぐに、Outlook はドキュメントを再フォーマットし、要素を取り除きます。
以下は、1 秒のポーリング間隔で呼び出される実装です。私が知る限り、DOM を監視するためのより良い方法はありません。
Office.context.mailbox.item.body.getAsync(
Office.CoercionType.Html, {
asyncContext: "Body"
},
function(asyncResult) {
// DOMParser
var doc = document.implementation.createHTMLDocument("document");
doc.documentElement.innerHtml = asyncResult.value;
// Append <br> if not found
var isModified = false;
var $html = $(doc.documentElement);
var $body = $html.find("body");
if (!!$body.find("br[id*='unique-identifier']").length) {
$body.append("<br id='unique-identifier'>");
isModified = true;
}
// Set if <br> was not found
if (isModified) {
Office.context.mailbox.item.body.setAsync(
$body.html(), {
coercionType: Office.CoercionType.Html
}
function(asyncResult) {}
)
}
}
);
後続の getAsync は、br
入力を開始するまでタグを表示します。その後、タグは削除され、setAsync が再度呼び出されます。setAsync によってカーソルがコンポーザーの先頭にジャンプし、ユーザーが滑らかに入力するのを妨げるため、これは煩わしいことです。br
この場合、タグの性質上、prepend または setSelectedDataAsync を使用できません。
asyncResult 値に基づいて、プレーンな HTML から Word Doc に変換することで再フォーマットが行われると思いますが、これを説明する方法がわかりません。
注意: これは、Word Doc と HTML の間で変換しない OWA とは異なりますが、withid
のようなプレフィックスとその他の属性を付け、カーソルがジャンプします。class
x_