HTML

Language

对于 Html 中表单提交中的 Textarea 中的换行的研究

一直不确定这个行为在各个平台的表现是怎样的,因为目前的三个主要平台的换行符并不一样。

今天通过实验基本明确了行为。

测试代码如下:

# -*- coding: utf-8 -*-
from flask import Flask, render_template_string, request
app = Flask(__name__)


@app.route('/', methods=['get', 'post'])
def hello_world():
    content = "hahah\rjiji"
    if request.method == "POST":
        print repr(request.form["content"])
        content = request.form["content"]
    tpl = """
    <form action="" method="post">
        <textarea name="content">{{ content }}</textarea>
        <input type="submit" value="Submit">
    </form>
    """
    return render_template_string(tpl, content=content)

if __name__ == '__main__':
    app.run(debug=True)

页面渲染

这个过程服务器端 Web 框架是没有行为了,该是什么还是什么。所以客户端得到的内容如下:

>>> import urllib
>>> urllib.urlopen("http://localhost:5000/").read()
'\n    <form action="" method="post">\n        <textarea name="content">hahah\rjiji</textarea>\n        <input type="submit" value="Submit">\n    </form>\n    '

TextArea 里面依然是原样的hahah\riji。但是我试了 Mac 和 Windows 上的 Chrome,都能正常将\r解析成换行。

表单提交

还是分别在 Windows 和 Mac 上都试了,TextArea 里面的换行在提交时,都会被浏览器统一成\r\n的形态。

END

Published @ Aug 15, 2017