如何在 Go 中使用 alert() 来显示消息框

How to alert() in Go to show messagebox

在javascript中,如果我们想在浏览器中显示带有自定义消息的弹出消息框,我们可以使用alert("message")函数。

如何在Go中完成?

使用log package or the fmt包登录,例如使用log.Printf或log.Println。

我做了一个非常简单的包来做到这一点。

还有其他软件包(如 sqweek's)具有更多功能,但我只是在寻找一些简单的启动错误。

go get -u tawesoft.co.uk/go

下载

然后像这样使用它:

package main

import "tawesoft.co.uk/go/dialog"

func main() {
    dialog.Alert("Message")
    dialog.Alert("There are %d lights", 4)
}

注意事项:

更新

我看到一些人在编写服务器端代码时误用了它。此消息框只会出现在计算机运行 Go 程序 上。如果您正在显示 HTML 页面并希望在用户的计算机上显示一个消息框,则需要在用户正在访问的页面上输出 JavaScript 警报代码!

对于Windows操作系统,您可以使用user32.dll来帮助您,如下所示。

package main

import ("fmt";"syscall";"unsafe")

func main() {
    // https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messageboxw
    var user32DLL = syscall.NewLazyDLL("user32.dll")
    var procMessageBox = user32DLL.NewProc("MessageBoxW") // Return value: Type int
    const (
        MB_OK          = 0x00000000
        MB_OKCANCEL    = 0x00000001
        MB_YESNO       = 0x00000004
        MB_YESNOCANCEL = 0x00000003
    )

    // https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messageboxw#return-value
    const (
        IDCANCEL = 2
        IDYES    = 6
        IDNO     = 7
    )
    lpCaption, _ := syscall.UTF16PtrFromString("Done Title")      // LPCWSTR
    lpText, _ := syscall.UTF16PtrFromString("This test is Done.") // LPCWSTR
    responseValue, _, _ := procMessageBox.Call(uintptr(0x00),
        uintptr(unsafe.Pointer(lpText)),
        uintptr(unsafe.Pointer(lpCaption)),
        uintptr(MB_YESNOCANCEL))
    if responseValue == IDYES {
        fmt.Printf("select Yes")
    }
}