在切换到全屏模式之前,我需要检查我的Go WASM Canvas项目是否支持全屏。到目前为止,我有以下代码:
var fullscreenFunc js.Value
var fullscreenNotSupported bool
设置以下逻辑:
fullscreenFunc = app.Get("requestFullscreen")
if fullscreenFunc.IsUndefined() {
fullscreenFunc = app.Get("mozRequestFullScreen")
if fullscreenFunc.IsUndefined() {
fullscreenFunc = app.Get("webkitRequestFullscreen")
if fullscreenFunc.IsUndefined() {
fullscreenFunc = app.Get("msRequestFullscreen")
if fullscreenFunc.IsUndefined() {
fullscreenNotSupported = true
println("Fullscreen not supported")
}
}
}
}
我希望能够用js调用正确的函数。Invoke,但我看不出有什么方法可以告诉Invoke应该对哪个对象进行调用。我的"app"值被解释为一个参数。
func Fullscreen(app js.Value) {
if fullscreenNotSupported {
return
}
fullscreenFunc.Invoke(app)
}
导致:
panic: JavaScript error: 'mozRequestFullScreen' called on an object that does not implement interface Element.
那么,我的想法是正确的吗?我可以调用正确方法的唯一方法不是存储Function,而是存储函数名的字符串,然后使用以下方法"invoke"/"call"它?
app.Call(fullscreenFunctionNameString)
感觉我误解了Invoke的目的。它只适用于js吗。Global((类型调用?
[edit]使用"调用",至少可以在不必重复上述浏览器细节的情况下导出函数名:
fullscreenFunctionName = fullscreenFunc.Get("name").String()
app.Call(fullscreenFunctionNameString)
它不能回答这个问题,但可能对试图做同样事情的人有帮助。
要调用的参数将转换为其包装的javascript函数的参数。由于这些全屏功能不需要任何参数,我认为您可能只需要更改:
fullscreenFunc.Invoke(app)
收件人:
fullscreenFunc.Invoke()
假设CCD_ 1在两个地方都是相同的JS元素。如果不是你的Call
解决方案可能是你的最佳选择。