API 1.4を使用してOutlookアドインを作成していて、br
タグをOutlook 2016コンポーザー本体に追加しようとしています。setAsync経由でOutlookコンポーザー本体にbrタグを追加する方法は?
ただし、入力を開始するとすぐに、ドキュメントが再フォーマットされ、要素が削除されます。
以下は、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入力を始めるまで、それが削除されるとsetAsyncが再び呼び出されbr
タグを示しています。これは、setAsyncがカーソルをコンポーザーの先頭にジャンプさせ、ユーザーが流動的に入力するのを妨害するため、迷惑です。この場合、br
タグの性質上、prependまたはsetSelectedDataAsyncを使用できません。
asyncResult値に基づいてプレーンHTMLからWord Docに変換することで再フォーマットが行われると想定していますが、これをどのように考慮するかわかりません。
NB:これは、WordドキュメントとHTMLの間で変換しませんが、x_
でclass
ようid
と他の属性の接頭辞ず、周りにジャンプするカーソルを引き起こしOWAからも異なっています。
タグのdivまたはspanを模倣しようとしましたか?これも削除されますか: "
スタイリングのdivと が動作しますが、空のdivは動作しません。 Outlookで「有効」とみなされるものには一定の制限がありますか? – SirTophamHatt
[documentation](https://dev.outlook.com/reference/add-ins/Body.html)は、HTMLタグの使用を制限しません。空のタグ(スタンドアロンのbrまたは空のdiv)の問題は、本文コンテンツの内部Outlook最適化だけです。いくつかの値を使用すると、タグは削除されません。少なくともあなたの問題は解決していますか? –