我正在尝试实现类似于Go Playground的 share
按钮的功能。
单击名为share
的按钮时,当前的HTML响应将保存到文件中。这还包括用户可以看到的所有内容。
到目前为止我可以做什么
-我可以成功将HTML页面保存到文件中。
-我可以使用HTTP Get从URL获取并保存整个页面。
注意事项
-我无法保存正在处理的当前网页。
到目前为止,这是我获取远程URL的代码:
func HTTPGet(url string, timeout time.Duration) (content []byte, err error) {
request, err := http.NewRequest("POST", url, nil)
if err != nil {
return
}
ctx, cancel_func := context.WithTimeout(context.Background(), timeout)
request = request.WithContext(ctx)
response, err := http.DefaultClient.Do(request)
if err != nil {
return
}
defer response.Body.Close()
if response.StatusCode != 200 {
cancel_func()
return nil, fmt.Errorf("INVALID RESPONSE; status: %s", response.Status)
}
return ioutil.ReadAll(response.Body)
}
希望这不会涉及手动操作DOM。
最佳答案
在客户的一些合作下,有几种方法可以做到。
如果要保存当前显示在客户端上的当前网页(具有当前表单值等),则必须在客户端使用Javascript进行操作。您可以获取文档,以某种形式对其进行序列化,然后将其发送到服务器以进行保存。
另一种方法是在服务器端再次生成HTML页面,但是该页面将不包含用户输入的数据或在客户端动态生成的任何HTML。
另一种方法是在客户端使用Javascript收集页面状态,包括表单值和代表任何动态生成的内容的数据,将其发送到服务器以保存,并根据需要重建页面。
关于html - 与用户输入完整共享当前html响应(原样),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59697238/