Word 对象在 Word2016 中未定义

Word object is undefined in Word2016

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

Microsoft Word 2016 MSO (16.0.6326.1022) 32 位 Windows 7 Enterprise

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

在我的 htmlhead 中,我有这个:

<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 文件的内容已缓存,无法(none 至少我发现)清除此缓存。因此,我在 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>

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

您看到的所有示例都应包括

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

行。

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

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

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

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

如果有更好的解决方案欢迎分享。

这里遗漏了很多信息,因此我将尝试清除所有假设。 可以肯定的一件事是,您不需要更改清单(在这个问题上称为 "xml file")来启用您的场景。

还有。

一个。我看到你在win 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 页面,只需确保在任务窗格中允许它,您应该没问题!

谢谢!

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

第一次加载,http 或 https 都可以。如果您从其他网站回电,则必须使用 https。