#html #go
#HTML #Вперед
Вопрос:
github.com/zserge/lorca
библиотека позволяет привязывать go funcs к javascript через протокол разработки chrome. С помощью этого вы можете передавать аргументы в go func из браузера.
Я пытаюсь отправить HTML непосредственно в go func вместо использования встроенного http-сервера из-за требований к разработке. (Пожалуйста, не уходите от темы и не спрашивайте, почему не использовать сервер.)
Вот пример того, что я могу сделать:
var inputform string = `
<html>
<body>
<form action="/action_page.php">
<input type="text" name="userinput">
<input type="submit" onclick="golangfunc(userinput.value)">
</form>
</body>
</html>
`
func main(){
ui, err := lorca.New("data:text/html," url.PathEscape(inputform), "", 480, 320)
ui.Bind("golangfunc", golangfunc)
defer ui.Close()
<-ui.Done()
}
func golangfunc(input string){
fmt.Println(input)
}
У меня произвольное количество полей ввода HTML, и поэтому я хотел бы передать HTML-форму вместо одного входного значения, но не уверен, как это сделать.
Ответ №1:
github.com/zserge/lorca
поддерживается функция JS из Go. Получить элементы HTML-формы с помощью ui.eval.
package main
import (
"fmt"
"github.com/zserge/lorca"
"net/url"
)
var inputform string = `
<html>
<body>
<form action="/action_page.php">
<input type="text" name="username" id="username">
<input type="text" name="address" id="address">
<input type="submit" onclick="golangfunc()">
</form>
</body>
</html>
`
func main(){
ui, _ := lorca.New("data:text/html," url.PathEscape(inputform), "", 480, 320)
ui.Bind("golangfunc", func() {
username := ui.Eval(`document.getElementById('username').value`)
address := ui.Eval(`document.getElementById('address').value`)
fmt.Println(username, address)
})
defer ui.Close()
<-ui.Done()
}