1

我正在为 Word 编写加载项。我有 Word 2016。在这种情况下Office.context.requirements.isSetSupported('WordApi', 1.1)应该返回true,但它返回false. 并且Word对象是未定义的。有任何想法吗?谢谢你。

Windows 7 企业版上的 Microsoft Word 2016 MSO (16.0.6326.1022) 32 位

以下是我的一些代码片段:

head我的html我有这个:

<script src="https://appsforoffice.microsoft.com/lib/1/hosted/Office.js" type="text/javascript"></script>
<script src="local/js/common.js"></script>

common.js 以

Office.initialize = function(reason) {
    console.log(Office.context.requirememts)
    if (Office.context.requirements.isSetSupported('WordApi', 1.1)) {
        //never gets in here
    }
    else {
        console.log("This add-in requires Word 2016 or greater.");
    }
};

Office.context.requirememts没有isSetSupported功能_

更新:有一件事我认为不相关,但显然它是相关的。加载时我的 html 页面重定向到另一个 html 页面,这似乎是导致问题的原因。我有重定向的原因是因为当 xml 文件有

<SourceLocation DefaultValue="http://localhost/wordaddin/index.html"/>

代替

<SourceLocation DefaultValue="C:\WordAddIn\index.html"/>

html文件的内容被缓存,没有办法(至少我没有找到)清除这个缓存。因此,我在 index.html 中所做的任何更改都不会通过。所以在加载 index.html 时,我这样做window.location='main.html?'+datestamp了,但后来我陷入了这种奇怪的境地。

这是 index.html:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <script>
        function init() {
            var timestamp = new Date().valueOf();
            window.location = "main.html?" + timestamp;
        }
    </script>
</head>
<body onload="init()">

</body>
</html>
4

4 回答 4

0

Office.initialize页面上有吗?您提到的 API 仅在 Office 有机会初始化后才可用...

您看到的所有样本都应包括

Office.initialize = function (reason) {
    ...
};

线。

~ Michael Zlatkovsky,Office 可扩展性团队的开发人员,MSFT

于 2016-02-05T00:35:33.043 回答
0

唯一对我有用(我必须说这是一个可怕的解决方案)是将查询字符串参数添加到我的 xml 中的 html 文件的地址

<SourceLocation DefaultValue="http://localhost/wordaddin/index.html?1"/>

然后每次更改 index.html 并重新附加加载项时,我都需要更改此参数。

如果有更好的解决方案,请分享。

于 2016-02-06T00:37:54.010 回答
0

这里缺少许多信息,因此我将尝试清除所有假设。可以肯定的一件事是,您不需要更改清单(在此问题上称为“xml 文件”)以启用您的方案。

还。

一个。我看到你在赢 7 b。您正在使用我们正确配置为受信任位置的基于文件共享的目录。C。您将清单 (xml) 放在该位置。d。清单的源位置指向正确的 html 位置。

如果以上所有假设都是正确的,那么您应该没有任何问题。我将 html 和 js 文件放在同一个文件夹中。

这是 Html 文件的内容

    <!DOCTYPE html>
    <html>
    <head>

   <script src="https://appsforoffice.microsoft.com/lib/1/hosted/Office.js" type="text/javascript"></script>
   <script src="common.js"></script>

<title></title>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<script>
    function init() {
        var timestamp = new Date().valueOf();
    //    window.location = "main.html?" + timestamp;
    }
</script>
</head>
<body onload="init()"> 
      Hello World!
<div id='result'></div>
</body>
</html>

请注意,我评论了 window.location 的东西,因为这不是必需的。我还添加了一个 div 来显示需求验证的结果。

这是js文件的内容

Office.initialize = function(reason) {
console.log(Office.context.requirememts)
if (Office.context.requirements.isSetSupported('WordApi', 1.1)) {
    //never gets in here
 document.getElementById("result").innerText= "Requirement supported.";
  }
  else {
    document.getElementById("result").innerText= "This add-in requires Word 2016 or greater.";
   }
  };

最后是清单:

 <?xml version="1.0" encoding="UTF-8"?>
 <!--Created:cb85b80c-f585-40ff-8bfc-12ff4d0e34a9-->
 <OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TaskPaneApp">
 <Id>90400971-e367-4e1b-b9bf-fc2163635c37</Id>
 <Version>1.0.0.0</Version>
 <ProviderName>Juanelo Balmori</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="Code FLow Word.js" />
<Description DefaultValue="Code Flow Sample!"/>

<Capabilities>
   <Capability Name="Document" />
 </Capabilities>
<DefaultSettings>
<SourceLocation DefaultValue="\\*name of your share*\index.html" />
</DefaultSettings>
<Permissions>ReadWriteDocument</Permissions>
</OfficeApp>

请注意,您需要为基于文件共享的目录受信任位置创建共享。

如果所有这些都到位,我将获得预期的功能。如果我更改 HTML 文件的内容,这会在我 F5 任务窗格时反映出来。

请注意,您可能必须获得一个栏来启用运行本地 html 页面,只需确保在任务窗格中允许它,您应该没问题!

谢谢!

于 2016-02-10T00:07:39.803 回答
0

我遇到过同样的问题。使用协议 https 可能会有所帮助。

第一次加载,http 或 https 工作正常。如果您从其他站点被回叫,则必须使用 https。

于 2016-04-27T02:27:15.153 回答