在 html 中访问 url 导入的 Javascript 个对象
Access Javascript objects imported by url in html
我正在编写一个嵌入式应用程序,我在其中使用 Office 365 库来访问通过全局对象 Office
向我的应用程序公开的 outlook 电子邮件上下文
我已经写了 javascript 应用程序,其中我在 html 页面中包含脚本 url,如下所示:
<script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
在我访问 ES6 中的上下文后 javascript 函数如下:
Office.initialize = function (reason) {
$(document).ready(function () {
Office.context.mailbox.addHandlerAsync(Office.EventType.ItemChanged, callbackfunction);
});
};
我想在 scala JS 中做同样的事情。
对于 html 中包含的 Office js 库,如上所述。
尝试访问 Office 对象后:
@js.native
@JSGlobal
object Office extends js.Any {
def initialize(f: String => Unit):js.Any = js.native
}
当我调用这个 Office 对象时,它抛出错误。
def callback = (reason:String) => {
println(s"reason called in callback function => $reason")
}
Office.initialize(callback)
如何在 scala JS 中实例化和访问 office 对象?
错误:
VM3981 playground-fastopt-bundle.js:4078 Uncaught TypeError: $g.Office.initialize is not a function
at HTMLDocument.<anonymous> (VM3981 playground-fastopt-bundle.js:4078)
at mightThrow (VM4209 playground-fastopt-bundle.js:25770)
at process (VM4209 playground-fastopt-bundle.js:25838)
初始化在 Office 对象中不可用。我们必须在 运行 时间加载函数。
错误信息:
add your initialization code on the Office.initialize function.
代码要点:
https://gist.github.com/rajeevprasanna/8d4f193bc328f2c2d48e113960fb25a6
鉴于错误,在您尝试调用它时,Office.initialize
函数似乎尚未创建。 Office
对象存在,但没有字段initialize
(或者不是函数)
这可能只是因为您的 script
标签的顺序不正确。确保应该定义 Office.initialize
的脚本在 在 Scala.js 代码之前执行。
我通过以下方法解决了这个问题:
根据错误消息 在 Office.initialize 函数上添加您的初始化代码,我必须定义一个 属性 来加载该函数。
@js.native
@JSGlobal
object Office extends js.Object {
var initialize:js.Function1[String, _] = js.native
}
加载以上功能后:
Office.initialize = { r:String =>
println(s"function initialized. reason => $r")
}
这种方法类似于按钮点击的事件处理。
我不确定
Office.initialize = { r:String =>
println(s"function initialized. reason => $r")
}
代码是否有效但是我写了一个小例子并且效果很好。
看看https://gist.github.com/abdheshkumar/f2ef0c73b942a8f5a48ec20559679105
我正在编写一个嵌入式应用程序,我在其中使用 Office 365 库来访问通过全局对象 Office
向我的应用程序公开的 outlook 电子邮件上下文我已经写了 javascript 应用程序,其中我在 html 页面中包含脚本 url,如下所示:
<script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
在我访问 ES6 中的上下文后 javascript 函数如下:
Office.initialize = function (reason) {
$(document).ready(function () {
Office.context.mailbox.addHandlerAsync(Office.EventType.ItemChanged, callbackfunction);
});
};
我想在 scala JS 中做同样的事情。
对于 html 中包含的 Office js 库,如上所述。
尝试访问 Office 对象后:
@js.native
@JSGlobal
object Office extends js.Any {
def initialize(f: String => Unit):js.Any = js.native
}
当我调用这个 Office 对象时,它抛出错误。
def callback = (reason:String) => {
println(s"reason called in callback function => $reason")
}
Office.initialize(callback)
如何在 scala JS 中实例化和访问 office 对象?
错误:
VM3981 playground-fastopt-bundle.js:4078 Uncaught TypeError: $g.Office.initialize is not a function
at HTMLDocument.<anonymous> (VM3981 playground-fastopt-bundle.js:4078)
at mightThrow (VM4209 playground-fastopt-bundle.js:25770)
at process (VM4209 playground-fastopt-bundle.js:25838)
初始化在 Office 对象中不可用。我们必须在 运行 时间加载函数。 错误信息:
add your initialization code on the Office.initialize function.
代码要点: https://gist.github.com/rajeevprasanna/8d4f193bc328f2c2d48e113960fb25a6
鉴于错误,在您尝试调用它时,Office.initialize
函数似乎尚未创建。 Office
对象存在,但没有字段initialize
(或者不是函数)
这可能只是因为您的 script
标签的顺序不正确。确保应该定义 Office.initialize
的脚本在 在 Scala.js 代码之前执行。
我通过以下方法解决了这个问题:
根据错误消息 在 Office.initialize 函数上添加您的初始化代码,我必须定义一个 属性 来加载该函数。
@js.native
@JSGlobal
object Office extends js.Object {
var initialize:js.Function1[String, _] = js.native
}
加载以上功能后:
Office.initialize = { r:String =>
println(s"function initialized. reason => $r")
}
这种方法类似于按钮点击的事件处理。
我不确定
Office.initialize = { r:String =>
println(s"function initialized. reason => $r")
}
代码是否有效但是我写了一个小例子并且效果很好。 看看https://gist.github.com/abdheshkumar/f2ef0c73b942a8f5a48ec20559679105