我正在编写一些Web表单,这些Web表格测试由学生编写的练习。某些服务器不太适合规格,正如课堂工作所预期的那样。将Windows新的行字符(即rn
)附加到浏览器生成的POST
请求,因为某些服务器正在执行ReadLine
而不是使用Content-Length:
header Count,这将很有用。
我正在考虑生成以下请求(来自IE):
POST /Brian HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-GB
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:43
Content-Length: 8
DNT: 1
Connection: Keep-Alive
Cache-Control: no-cache
location
但是将rn
附加到结尾。到目前为止,我尝试这样做的是:
<form>
Username: <input type="text" name="url" id="url4"
onChange="document.getElementById('update4').setAttribute('action',
'http://localhost:43/' + document.getElementById('url4').value);"> </input>
</form>
<form id="update4" method="post" action="http://localhost:43/">
Location: <input type="text" name="isindex" id="location5"
onChange="document.getElementById('location5').value =
document.getElementById('location5').value + '\r\n'"> </input>
<input id="mysubmit3" type="submit" value="go" ></input>
</form>
我知道,将新线附加到事物上可能会很棘手,因此我正在寻找指导。我不希望将Newline字符作为帖子的一部分编码。我只想在POST
命令之后发送一个RAW rn
来通过。
文本输入元素仅允许单行文本。根据文本输入的W3C工作草案:
输入 type = text - 文本输入字段
type =&quot;
指定其输入元素是输入元素值的单行平面编辑控件。...
value =无线断裂的字符串指定此输入元素的值。
value :任何包含无线feed(u 000a," lf")或托架返回(u 000d," cr")字符的字符串。1
和根据 <input>
的mdn文档,其中属性 type ='text':
|类型 |描述 ||-------- |----------------------------------- ||文字|默认值。单行文本字段。线路断路将自动从输入值中删除。| 2
因此,在文本输入元素的值中添加新的线字符基本上是多余的。
替代解决方案可能包括:
添加隐藏的文本区域并设置文本区域的值,以包含具有新行字符的文本字段的值,尽管可能很难防止学生掩盖文本方面并更改价值。请参阅此phpfiddle中所示的。
使用FormData存储表单的值,添加新的行字符,然后使用具有更改的值的FormData提交表单。这可能只能通过使表单异步提交(例如使用Ajax,诸如iframe,其他窗口等)。
。
可以通过JavaScript添加新的线条,并具有几个不同的技术,包括:
- 新的线字符:
n
:
console.log("Bobnisncool");
- 模板文字(请参阅此答案)
console.log(`Bob
is
cool.`);
- string.fromcharcode()
console.log('line 1'+String.fromCharCode(10, 13)+'line 2')
1 https://www.w3.org/tr/2012/wd-html-markup-20120315/input.text.text.html#input.text.text.text.text
2 https://developer.mozilla.org/en-us/docs/web/html/element/element/input/input
您是否尝试过使用实际的textarea
而不是键入textarea
?
而不是:
<input type="textarea" name="isindex" id="location5"
onChange="document.getElementByID('location5').value =
document.getElementById('location5').value + '\r\n'"> </input>
尝试此
<form>
Username: <input type="text" name="url" id="url4"
onChange="document.getElementById('update4').setAttribute('action',
'http://localhost:43/' + document.getElementById('url4').value);"> </input>
</form>
<form id="update4" method="post" action="http://localhost:43/">
Location: <textarea name="isindex" id="location5"
onChange="document.getElementById('location5').value =
document.getElementById('location5').value + 'rn'"> </textarea>
<input id="mysubmit3" type="submit" value="go" ></input>
</form>