Outlook加载项 - 替换滚动文本后的空白正文

时间:2016-08-28 20:24:06

标签: ms-office office365 outlook-addin

我正在使用Outlook 2016的Office365加载项,该加载项允许用户使用任务窗格中的按钮更改电子邮件正文。

任务窗格中的

HTML:

 <p><button onclick="createLongBody()">Set Long Body</button></p>
 <p><button onclick="createShortBody()">Set Short Body</button></p>
 <div id="status"></div>

在Javascript中:

function createLongBody() {

    var longText = "<html><body>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/>Hello<br/></body></html>";
    Office.context.mailbox.item.body.setAsync(longText, { coercionType: Office.CoercionType.Html }, function () {
        $("#status").html("Long email complete!");
    });
};

function createShortBody() {
    Office.context.mailbox.item.body.setAsync("<html><body><h1>Hello</h1></body></html>", { coercionType: Office.CoercionType.Html }, function () {
        $("#status").html("Short email complete!");
    });

要复制:

  1. 点击&#34;创建长身体&#34;按钮
  2. 滚动到底部,将光标放在电子邮件末尾
  3. 点击&#34;创建短身体&#34;按钮
  4. 结果:

    状态文字更改为&#34;简短的电子邮件完成&#34;,但新的简短电子邮件不会显示 - 正文只是空白。

    我不确定这是否是Office加载项API错误,但是想将它呈现给社区以查看是否有人有任何想法? 其他人可以复制吗?谢谢!

    使用HTML / JS编辑以复制

2 个答案:

答案 0 :(得分:1)

您是否在第一次更改身体上下文的回调中调用了后续调用?如果不是,它可能无法工作,因为 setAsync 是异步函数。

我正在尝试重现此问题,但失败了。下面的测试功能对我很有用:

  function setBody() {
    var theHtml = "<html><body><h1>Hello</h1><h2> Jack,</h2><h3>Rose</h3> <h4>..</h4><h1>Hello</h1><h2> Jack,</h2><h3>Rose</h3> <h4>..</h4><h1>Hello</h1><h2> Jack,</h2><h3>Rose</h3> <h4>..</h4><h1>Hello</h1><h2> Jack,</h2><h3>Rose</h3> <h4>..</h4><h1>Hello</h1><h2> Jack,</h2><h3>Rose</h3> <h4>..</h4></body></html>";
    Office.context.mailbox.item.body.setAsync(theHtml, { coercionType: Office.CoercionType.Html }, function (asyncResult) {
       var newHtml= theHtml.replace(/Rose/g, "rose");
       Office.context.mailbox.item.body.setAsync(newHtml, { coercionType: Office.CoercionType.Html });
    });
}

如果您仍然遇到问题,您是否介意分享完整的代码以帮助我们重现此问题?

答案 1 :(得分:0)

我尝试了你的代码,它对我有用。我复制粘贴你的函数并运行createLongBody()然后createShortBody()并更换电子邮件的正文。

您使用的是什么版本的Outlook?

enter image description here