Javascript 需要从CustomTab Word Web加载项控制任务窗格
我正在开发一个带有CustomTab和TaskPane的Word Web加载项。 从Manifest.xml文件中,我通过Javascript 需要从CustomTab Word Web加载项控制任务窗格,javascript,office-js,office-addins,word-web-addins,Javascript,Office Js,Office Addins,Word Web Addins,我正在开发一个带有CustomTab和TaskPane的Word Web加载项。 从Manifest.xml文件中,我通过ExecuteFunction JS函数被命中,但TaskPane UI上没有更新 Manifest.xml <FunctionFile resid="Contoso.FunctionFile.Url" /> <bt:Urls> <bt:Url id="Contoso.FunctionFile.Url" DefaultValue="~re
ExecuteFunction
JS函数被命中,但TaskPane UI上没有更新
Manifest.xml
<FunctionFile resid="Contoso.FunctionFile.Url" />
<bt:Urls>
<bt:Url id="Contoso.FunctionFile.Url" DefaultValue="~remoteAppUrl/Home.html" />
</bt:Urls>
<Action xsi:type="ExecuteFunction">
<FunctionName>appendText</FunctionName>
</Action>
HTML
相同的JQuery函数在任务窗格中的普通按钮单击函数调用中工作
如何触发应该正确执行的事件?函数文件HTML及其调用的JavaScript文件在与任务窗格完全不同的执行上下文中运行。如果我理解您所做的,那么您已经将home.html设置为函数文件和任务窗格主页。如果执行此操作,则在调用函数文件时加载home.html的第二个副本(我认为第二个副本将不可见,因为函数文件从不显示UI)。您的append方法正在处理页面的第二个实例,而不是任务窗格中的实例 我能想到的从函数文件(应该是无UI页面)到任务窗格通信的最佳方式是使用LocalStorage。appendText方法应该在LocalStorage中使用诸如“count”之类的键存储值“10”。任务窗格中的JavaScript需要从LocalStorage读取“count”,并将其值附加到#main 如果需要以自动方式执行此操作,则任务窗格中检查LocalStorage中的“计数”的代码应在定时循环中运行 2018年6月16日更新: 针对OP的评论: 这里有两种不同的执行上下文;也就是说,Internet Explorer及其嵌入式JavaScript引擎的两个不同实例: 首先,任务窗格有一个主页home.html。它有一个UI并加载JavaScript 其次,功能区按钮启动FunctionFile.html。这应该是与任务窗格主页不同的HTML页面。这个页面应该没有用户界面;主体中没有可见的HTML元素。它应该加载JavaScript。这应该是与任务窗格主页加载的JS文件不同的JS文件。您不希望加载同一文件的两个副本。调用此页面时,不会打开IE窗口或任务窗格。它从未被看见过 这两个IE实例彼此都不知道。它们只能通过写入和读取机器的本地存储器进行通信。因此,如果希望通过自定义选项卡上的按钮调用JavaScript来更改任务窗格中页面中的DOM元素,则只能通过本地存储传递信号来实现 由FunctionFile.html加载的JavaScript应该将“count”值存储在LocalStorage中,不做其他事情。此文件中的JavaScript无法处理主页中的DOM元素,因为该DOM位于完全不同的IE实例中 主页加载的JavaScript应该从LocalStorage读取“count”值,并将其附加到主页DOM中的
#main
元素
因此,写入LocalStorage的JavaScript和读取LocalStorage的JavaScript在不同的函数中,在不同的JavaScript文件中,在IE的不同实例中运行
如果还没有,请查看和。因此我更改了appendText方法,如下所示:
var count=10;if(typeof(Storage)!=“undefined”){localStorage.setItem(“count”,count);var s=localStorage.getItem(“count”);console.log;$(“#main”).append(s);}else{document.getElementById(“result”).innerHTML=“不受支持”}
但我没有得到事件执行,我的代码有什么需要更改的吗?我是新手,你能解释一下吗?
function appendText() {
var count = 10;
$("#main").append(count);
}