Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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 如何防止Word缓存JSAPI代码?_Javascript_Html_Ms Word_Office Js_Word Addins - Fatal编程技术网

Javascript 如何防止Word缓存JSAPI代码?

Javascript 如何防止Word缓存JSAPI代码?,javascript,html,ms-word,office-js,word-addins,Javascript,Html,Ms Word,Office Js,Word Addins,我正在Office JS API中开发Microsoft Word加载项。外接程序允许文档作者或编辑器选择文本区域,并创建将区域与索引项关联的标记。这些标记是隐藏的Ooxml字符串。第二步遍历文档正文,也遍历脚注,并在文档末尾生成带有页码占位符的索引。最后一步是在VSTO C中实现的,它再次遍历文档并用实际的页码解析页码占位符,因为JS API无权访问它们 FWIW我正在使用Word 2016版本1908,构建11929.20114点击运行-我们的组织使用Office 365和Word JS A

我正在Office JS API中开发Microsoft Word加载项。外接程序允许文档作者或编辑器选择文本区域,并创建将区域与索引项关联的标记。这些标记是隐藏的Ooxml字符串。第二步遍历文档正文,也遍历脚注,并在文档末尾生成带有页码占位符的索引。最后一步是在VSTO C中实现的,它再次遍历文档并用实际的页码解析页码占位符,因为JS API无权访问它们

FWIW我正在使用Word 2016版本1908,构建11929.20114点击运行-我们的组织使用Office 365和Word JS API 1.1要求集。html、js和css代码托管在Web服务器上-在用户的C:驱动器上的目录中有一个清单xml文件,该文件指向Web服务器URL,并且该C:目录位置作为\\localhost\C$\目录名添加到Word>Options>Trust Center>Trust Center Settings>Trusted Add-in目录列表中。然后从“开发人员”选项卡的“外接程序”>“共享文件夹”列表中侧面加载外接程序。 澄清:manifest.xml文件是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:type="TaskPaneApp">
           <Id>e69eaa23-19f3-48fd-9f8e-694eb013e434</Id>
    <Version>1.0.0.0</Version>
    <ProviderName>Microsoft</ProviderName>
    <DefaultLocale>en-US</DefaultLocale>
    <DisplayName DefaultValue="PSU Indexing V2" />
    <Description DefaultValue="Manage and create document indexes." />
    <Hosts>
        <Host Name="Document"/>
    </Hosts>
    <DefaultSettings>
        <SourceLocation DefaultValue="https://psuindexer.la.psu.edu/PSUIndexerV2/home.html" />
    </DefaultSettings>
    <Permissions>ReadWriteDocument</Permissions>
</OfficeApp>
我遇到的一个问题是Word缓存了非常旧版本的JSAPI代码。我已进入Internet Explorer版本11.592.18362.0,更改了Internet选项>常规>浏览历史记录>设置>,并指定检查存储页面的较新版本:每次访问网页时。根据上的建议,我在HTML中添加了meta http equiv标记,如下所示:

但这种行为比这更奇怪。我可以安装外接程序,在网站上修改html和javascript,然后单击外接程序中的重新加载按钮,页面就会刷新,代码也会更新。但是如果我关闭文档并重新打开它,它似乎有一个非常旧的代码的缓存版本,即昨天的代码。重新加载无法解决问题-我唯一能做的是: 1关闭外接程序 2从受信任的加载项目录中删除该位置 3关闭Word并重新打开它 4再次将该位置添加回受信任的加载项目录 5关闭Word并重新打开它 6从“开发人员”>“加载项”>“共享”文件夹重新添加加载项

然后,它将再次使用最新的代码,直到我关闭word文档,在重新打开它时,它将再次使用昨天的版本


有人能解释一下这里发生了什么,或者我如何解决它吗?如果我是最终用户,目前的情况对我来说是不可接受的。

这太复杂了,无法处理评论,因此我将使用答案,稍后删除。 因为它似乎是特定于文档的,所以让我们尝试以下几点:

重新生成缓存,这样就打开了一个文档,该文档使用的加载项版本比当前版本旧。用其他名称保存该文件。然后重新打开文件和外接程序。它使用的是旧版本还是新版本

如1所示,保存使用旧版本的文件的副本。然后完成3步清理过程,这样您就有了一个使用最新版本的新文档。保存一份。将.zip添加到两个文件名的末尾。docx文件是zip格式的。把它们都解开。然后使用diffing工具,看看是否有任何差异可以解释缓存


你试过清除办公室缓存吗?请参阅。谢谢,但是没有,这没有效果。作为故障排除步骤,而不是解决方案,请尝试关闭外接程序和Word;但是不要使用外接程序目录配置。然后重新启动计算机。重新启动Word和加载项。您是获得最新版本的加载项还是旧版本的加载项?我有点不清楚您在哪里提供文件。您说的是webserver,但这是指运行在不同计算机上的服务器,还是域localhost:xxxx?受信任目录中的路径不应是包含localhost的HTML路径。它应该是\\{MyComputer}{MySharedManifestFolder}形式的Windows网络路径。例如,我的是\\RickLaptop\AddinManifests。请注意,虽然AddinManifests文件夹位于C驱动器的根目录中,但没有字符串localhost和C:。1项目1:保存/重命名的副本仍有错误消息。有趣的是,仅仅打开它就会导致它尝试加载旧加载项,然后当我想关闭它时,它会询问我是否要保存。如果我确实保存了,下次我尝试在不做任何操作的情况下打开和关闭它时,它会再次询问我是否要保存它。项目2:差异存在于两个文件中:\DocProps\app.xml:在三步清理标记为1之前,但在清理的文件中,它是37。FWIW,这份文件有37页长。其他差异在\word\settings.xml中如下:未清理:已清理:未清理:已清理:我不知道这意味着什么!关于1,我认为您之前没有提到错误消息。它是什么?何时/何地看到它?错误消息是我在上面的一条注释中提到的:插件错误
或者此加载项不再可从以下服务器获得:localhost。我一打开文档就看到了它,它试图侧载外接程序-我在外接程序应该出现的地方看到了它。我的坏消息。我在页面上搜索错误,但我认为当我搜索时,一些评论被折叠了。