当 <textarea> 中的文本不在开始和结束标记之间时,它在哪里?

Posted

技术标签:

【中文标题】当 <textarea> 中的文本不在开始和结束标记之间时,它在哪里?【英文标题】:Where is the text in a <textarea> when it is not between the beginning and ending tags? 【发布时间】:2021-04-20 13:33:06 【问题描述】:

我有一种情况,我在&lt;textarea&gt; 中输入了Hello.,我可以看到文本区域中的文本,但它没有出现在&lt;textarea&gt;&lt;/textarea&gt; 之间。

这是一个极其简单的情况,但是我为它做了一个JSFiddle:https://jsfiddle.net/rhedin/bhwc394e/2/ 如果你在textarea 中输入Hello.,然后在调试器中检查元素,你会在textarea 中看到Hello.,但元素会以这种方式显示:&lt;textarea&gt;&lt;/textarea&gt;

我关心的原因是我正在使用 Selenium。我向 webdriver 进程发送一条消息,webdriver 进程向以 marionette 模式运行的 Firefox 实例发送一条消息。当我询问 webdriver textarea 的内容是什么时,它返回 textarea 的 innerText。那是一个空字符串。我可以在屏幕上明显看到的文字在其他地方。

有人知道怎么回事吗?

【问题讨论】:

使用值属性。看吧,请 - ***.com/questions/14939010/get-value-from-text-area ...或***.com/questions/48493301/get-text-from-the-textarea DevTools 中的检查选项卡不显示 textarea 元素的内容。此外,textarea 只能包含纯文本,它没有 html,请改为阅读 textarea 的 value 属性/属性。 【参考方案1】:

好吧,我放弃了。我发现了以下几点,但我并不满意。

是的,DevTools 中的检查选项卡确实显示了 textarea 元素的内容。

我已经更改了我的 JSFiddle (https://jsfiddle.net/rhedin/bhwc394e/11/),以便同时使用输入和文本区域。两者都被赋予了一个值——elt.value = 'Added as a value'——和一个内部文本——elt.innerText = 'Added as an inner text'。如果您检查控制台中的元素,您将看到 valueinnerHTML 属性都已定义。 (好像浏览器把innerText的值放在innerHTML属性里面。innerHTML是innerText的超集。)

elt.valueelt.innerHTML 都被定义时,value 优先。向用户显示value中的数据。

所以我学到了足够多的知识,可以解决涉及 Selenium 的问题。对于那些可能受益的人,这是我的 Selenium 解决方案中的关键线。 textareaElement.get_attribute('value')

【讨论】:

以上是关于当 <textarea> 中的文本不在开始和结束标记之间时,它在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3:如何正确显示“textarea”中的文本?

文本域,支持多行文本输入

当里面有很多文本时,在 textarea 中输入超级慢

<form>中的<input>文本框和<textarea>实现的功能有啥异同

HTML 在 textarea 中保存文本

用 <p> 标签替换 textarea 中的空行并将其显示为 HTML 有效代码