Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要从CustomTab Word Web加载项控制任务窗格_Javascript_Office Js_Office Addins_Word Web Addins - Fatal编程技术网

Javascript 需要从CustomTab Word Web加载项控制任务窗格

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

我正在开发一个带有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="~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);
}