登录
首页 >  Golang >  Go问答

Webview 窗口中无法执行 JavaScript 函数

来源:stackoverflow

时间:2024-02-19 16:42:25 417浏览 收藏

推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

有志者,事竟成!如果你在学习Golang,那么本文《Webview 窗口中无法执行 JavaScript 函数》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我是网络前端方法的新手。因此,当您需要更多信息时,请询问。

我有一个带有 go 后端和 html/css/js 前端的应用程序,效果相当好。最近,我尝试过渡到 webview,它在 html 和 css 部分也工作得很好。但是,我的 javascript 函数不起作用,我很不知道如何解决该问题。

这是一个独立的、最小的示例,它演示了该问题。 web 视图窗口打开并显示标题和按钮。但是,单击该按钮不会打开警报对话框。

非常感谢任何为我指明正确方向的提示。

package main

import (
    "github.com/webview/webview"
    "html/template"
    "net/http"
)

type DummyData struct {
     PageTitle string
}

func main() {
    go start()
    w := webview.New(true)
    defer w.Destroy()
    w.SetTitle("Test webview")
    w.SetSize(800, 600, webview.HintNone)
    w.Navigate("http://localhost:80")
    w.Run()
}

func start() {
    tmpl, _ := template.New("lala").Parse("<!DOCTYPE html><body><h1>{{.PageTitle}}</h1><button onclick=\"myFunction()\">Try it</button><script>function myFunction() {alert(\"js working\");}</script></body>\n</html>")
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        data := DummyData{
            PageTitle: "My webview page title",
        }
        tmpl.Execute(w, data)
    })
    http.ListenAndServe(":80", nil)
}

正确答案


实际上你的 js 函数确实有效,只是警报不起作用。不太清楚为什么,但我认为警报、确认和提示不会再受到人们的喜爱。

这在这里有效:

package main

import (
    "html/template"
    "net/http"

    "github.com/webview/webview"
)

type DummyData struct {
    PageTitle string
}

func main() {
    go start()
    w := webview.New(true)
    defer w.Destroy()
    w.SetTitle("Test webview")
    w.SetSize(800, 600, webview.HintNone)
    w.Navigate("http://localhost:8000")
    w.Run()
}

func start() {
    const page = `
    <!DOCTYPE html>
    <body>
        <h1>
            {{.PageTitle}}
        </h1>
        <button onclick="myFunction()">Try it</button>
    
        <div id="d1" hidden>
            poor man's alert
        </div>
        <script>
            function myFunction() {
                d1.hidden = !d1.hidden
                // alert("js working");
            }
        </script>
    </body>
    </html>
    `
    tmpl, _ := template.New("lala").Parse(page)
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        data := DummyData{
            PageTitle: "My webview page title",
        }
        tmpl.Execute(w, data)
    })
    http.ListenAndServe(":8000", nil)
}

以上就是《Webview 窗口中无法执行 JavaScript 函数》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>