Word 对象在 Word2016 中未定义
Word object is undefined in Word2016
我正在为 Word 编写加载项。我有 Word 2016。在这种情况下,Office.context.requirements.isSetSupported('WordApi', 1.1)
应该是 return true
,但它 return 是 false
。 Word
对象未定义。有任何想法吗?谢谢。
Microsoft Word 2016 MSO (16.0.6326.1022) 32 位 Windows 7 Enterprise
以下是我的一些代码片段:
在我的 html
的 head
中,我有这个:
<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。
我正在为 Word 编写加载项。我有 Word 2016。在这种情况下,Office.context.requirements.isSetSupported('WordApi', 1.1)
应该是 return true
,但它 return 是 false
。 Word
对象未定义。有任何想法吗?谢谢。
Microsoft Word 2016 MSO (16.0.6326.1022) 32 位 Windows 7 Enterprise
以下是我的一些代码片段:
在我的 html
的 head
中,我有这个:
<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。