第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 Go on GAE 中顯示由 html/template 生成的換行符

在 Go on GAE 中顯示由 html/template 生成的換行符

Go
HUX布斯 2021-12-27 15:04:40
我的應(yīng)用程序是用 Go 編寫的。應(yīng)用程序的一個(gè)頁(yè)面從 HTML 文本區(qū)域接收用戶數(shù)據(jù),該文本區(qū)域作為字符串?dāng)?shù)據(jù)保存到 Google App Engine 數(shù)據(jù)存儲(chǔ)區(qū)。然后,在應(yīng)用程序的另一個(gè)頁(yè)面上,它需要以用戶在 HTML 文本區(qū)域中鍵入的格式顯示數(shù)據(jù),或者至少在用戶在 HTML 文本字段中鍵入數(shù)據(jù)時(shí)按 Enter 鍵時(shí)保留換行符。我嘗試使用<pre>標(biāo)簽來(lái)顯示用戶在文本字段中輸入的保留換行符,效果很好。然而,我發(fā)現(xiàn)有一個(gè)雙標(biāo)簽\t\t使用<pre>標(biāo)簽時(shí)插入字符串的開頭,我可以使用 Javascript 刪除雙標(biāo)簽。我的主意,讓換行符用戶輸入到文本字段是使用JavaScript替換功能全部更換\r\n,\n并\r到<br>,但是,它沒有發(fā)揮出來(lái)。Go 似乎沒有將換行符輸出到 html 源代碼中。出于安全原因,我正在使用“html/template”,但我沒想到它會(huì)\r\n從其輸出中完全刪除字符。\t\t對(duì)字符串開頭的奇怪雙標(biāo)簽有什么建議嗎?
查看完整描述

2 回答

?
縹緲止盈

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊

不要將換行符更改為<br>javascript,而是在 Go 中進(jìn)行:http : //play.golang.org/p/jJXMZxtYcv


package main


import (

    "html/template"

    "log"

    "os"

    "strings"

)


func main() {

    const tpl = `

<!DOCTYPE html>

<html>

    <head>

        <meta charset="UTF-8">

        <title>{{.Title}}</title>

    </head>

    <body>

        <div>{{nl2br .Text}}</div>

    </body>

</html>`


    check := func(err error) {

        if err != nil {

            log.Fatal(err)

        }

    }


    funcs := template.FuncMap{

        "nl2br": func(text string) template.HTML {

            return template.HTML(strings.Replace(template.HTMLEscapeString(text), "\n", "<br>", -1))

        },

    }


    t, err := template.New("webpage").Funcs(funcs).Parse(tpl)

    check(err)


    data := struct {

        Title string

        Text  string

    }{

        Title: "My page",

        Text:  "\t\tLine 1\r\nLine2\r\n",

    }


    err = t.Execute(os.Stdout, data)

    check(err)

}


查看完整回答
反對(duì) 回復(fù) 2021-12-27
?
拉丁的傳說(shuō)

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以簡(jiǎn)單地解決 CSS 格式問(wèn)題,即white-space屬性:


white-space 屬性指定如何處理元素內(nèi)的空白。


CSS 語(yǔ)法:


white-space: normal|nowrap|pre|pre-line|pre-wrap|initial|inherit;

該pre值就像被包裝在一個(gè) HTML<pre>標(biāo)簽中一樣,這也將呈現(xiàn)雙選項(xiàng)卡。


使用該pre-line值對(duì)您有用:


pre-line空格序列將折疊為單個(gè)空格。文本將在必要時(shí)換行,并在換行符處


因此保留了行,但多個(gè)空格被折疊為一個(gè)。優(yōu)點(diǎn)是您不需要轉(zhuǎn)換原始文本,瀏覽器會(huì)應(yīng)用正確的格式。代碼對(duì)于 HTML 注入攻擊仍然是安全的。


完整示例:


func main() {

    t := template.Must(template.New("").Parse(src))

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {

        t.Execute(w, text)

    })

    panic(http.ListenAndServe("localhost:8080", nil))

}


const src = `<html><body>Entered text:

<div style="white-space:pre-line">{{.}}</div>

</body></html>`


const text = "\t\t1st line\n2nd line\r\n3rdline"

你最初的雙標(biāo)簽 \t\t

請(qǐng)注意,您的初始雙標(biāo)簽\t\t不是由瀏覽器或表單提交(也不是數(shù)據(jù)存儲(chǔ),如果您將其存儲(chǔ)在那里)生成,而是很可能是您使用縮進(jìn) 2 個(gè)標(biāo)簽的模板的結(jié)果。模板的縮進(jìn)也會(huì)寫入輸出,因此您應(yīng)該正確關(guān)閉<textarea>模板中沒有換行符的內(nèi)容。由于您沒有發(fā)布您的模板和代碼,我無(wú)法幫助您找出初始雙標(biāo)簽的原因,但您應(yīng)該找到根本原因而不是治療癥狀。


查看完整回答
反對(duì) 回復(fù) 2021-12-27
  • 2 回答
  • 0 關(guān)注
  • 381 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)