登录
首页 >  Golang >  Go问答

某些 Windows 系统上 Webview 无法正常显示页面

来源:stackoverflow

时间:2024-02-11 22:15:23 259浏览 收藏

今天golang学习网给大家带来了《某些 Windows 系统上 Webview 无法正常显示页面》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

我正在使用 github.com/webview/webview 在 go 应用程序上呈现 web 视图。它在我正在编写它的一个系统上运行良好。但在某些全新安装的系统上,该请求不会发送到 http 服务器。看来故障出在 webview dll 中。但我不知道如何调试它。

当前在 windows 10 pro x64 21h1 上使用 go 1.17.1

我正在运行非常简单的代码,类似于示例...我还使用 go 来提供 http 页面。然后我打开一个 webview 框来与其交互。

  • 在 windows 开发计算机上,一切都按预期运行。
  • 在单独全新安装的 windows(所有相同版本)中,该框显示为空白 - 只有白色。虽然没有崩溃。只是不显示任何内容。
  • 可以通过本地计算机上的浏览器点击相同的 url。这样页面就可以工作了。
  • 更改网址以引用外部网站(例如 http://google.com),它适用于所有计算机
  • 在某些机器上,它可以工作。其他人则不然。
  • 我将 dll 与 exe 放在同一文件夹中。
  • 添加调试语句,它基本上按预期执行所有内容。
  • 但是,请求并未发送至 http 服务器
  • 顺便说一句,代码在 linux 上也可以正常运行......

我能看到的唯一模式是,运行的 windows 机器似乎是已经存在并更新了一段时间的旧机器。相对较新的安装似乎失败了。那么一定存在某种微妙的依赖关系?

我不知道如何调试这个。 webview 代码中似乎失败了。

任何建议将不胜感激...下面的简单测试代码...

main.go

package main

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

    "github.com/gorilla/mux"
    "github.com/webview/webview"
)

var (
    ipport = "127.0.0.1:8080"
    url    = "http://" + ipport
)

func main() {
    log.print("starting main")

    go httpserver(ipport)

    openui(url)
}

func openui(url string) {
    log.print("starting openui")

    w := webview.new(true)
    defer w.destroy()

    w.settitle("webview window")
    w.setsize(800, 600, webview.hintfixed)
    w.navigate(url)
    w.run()
}

func httpserver(ipport string) {
    log.print("starting httpserver")

    rtr := mux.newrouter()
    rtr.handlefunc("/", page)

    log.printf("listening on %s\n", ipport)
    err := http.listenandserve(ipport, rtr)
    if err != nil {
        log.print(err)
    }
}

func page(w http.responsewriter, r *http.request) {
    log.print("starting page handler")

    var err error
    tmpl := template.new("page")

    if tmpl, err = tmpl.parsefiles("page.gohtml"); err != nil {
        log.print(err)
    }

    if err = tmpl.executetemplate(w, "page", nil); err != nil {
        log.print(err)
    }

}

页面.gohtml

{{define "page"}}



    

hello page

{{end}}

工作系统的输出...

2021/09/21 11:51:00 starting main
2021/09/21 11:51:00 starting openui
2021/09/21 11:51:00 starting httpserver
2021/09/21 11:51:00 listening on 127.0.0.1:8080
2021/09/21 11:51:02 starting page handler

失败系统的输出...同样,如果您使用网络浏览器点击它,这将起作用...例如边缘

2021/09/21 11:52:00 Starting main
2021/09/21 11:52:00 Starting OpenUI
2021/09/21 11:52:00 Starting HTTPserver
2021/09/21 11:52:00 Listening on 127.0.0.1:8080

正确答案


经过几天的摆弄......我明白了。

您需要实际安装 Webview2 运行时之一。看来在我的旧 Windows 系统上,所需的依赖关系是通过一些以前的更新或其他未知方式满足的。我当然从未专门安装过运行时。但在全新安装时,您需要安装运行时选项之一。您仍然需要将 dll 与 exe 放在同一文件夹中。一旦安装,它就可以在任何地方使用。

参见: https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution

有人应该更新自述文件以提及运行时的安装...我使用了 Bootstrapper,因为它较小。

感谢您的聆听...

今天关于《某些 Windows 系统上 Webview 无法正常显示页面》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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