我需要匹配所有这些开始标记:
<p>
<a href="foo">
Run Code Online (Sandbox Code Playgroud)
但不是这些:
<br />
<hr class="foo" />
Run Code Online (Sandbox Code Playgroud)
我想出了这个,并希望确保我做对了.我只抓住了a-z.
<([a-z]+) *[^/]*?>
Run Code Online (Sandbox Code Playgroud)
我相信它说:
/,然后我有这个权利吗?更重要的是,你怎么看?
我有一个contenteditable元素,每当我输入一些东西并点击ENTER它创建一个新的<div>并将新的行文本放在那里.我不喜欢这一点.
是否有可能防止这种情况发生或至少只是用一个<br>?
这是演示http://jsfiddle.net/jDvau/
注意:这不是firefox中的问题.
我在数据库中存储内容,例如:
Hello
This
is
Text
Run Code Online (Sandbox Code Playgroud)
当我将它传递给textarea时,它会保留新的换行符.但是,如果我将该文本传递给内容可编辑的div,它将保持如下:
Hello This is Text
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我在键盘事件处理程序中编写了一些代码,<br>以便在按下Enter键时插入一个代码:
event.preventDefault();
document.execCommand('InsertHTML', true, '<br>');
Run Code Online (Sandbox Code Playgroud)
这只有在光标在两个字母之间时才有效,如果它在最后我需要两个 - <br>元素.我可以检测到我是否在一条线的末端?或者输入问题的其他一些工作想法?
我还尝试捕捉正常的键事件(按下按下的ctrl-Key)并使用JS创建键盘事件,其中Enter键与ctrl一起按下.但这不起作用......
它只需要在Webkit/Safari中工作......
我在Chrome上尝试了以下代码:
document.execCommand("insertBrOnReturn", false, true);
Run Code Online (Sandbox Code Playgroud)
我将最后一个参数设置为true或false,行为不会改变:返回时,<div>将添加新元素.
一定错过了什么......有什么想法吗?
编辑:不是重复的
事实上,甚至在这里提到并链接了标记为重复的问题。这些问题的标题和目的完全不同。另一个问题的答案之一,可以说是用来回答这个问题的,是出于完全不同的原因(与 IE 的兼容性),并且很难被理解为这个问题的答案。
原问题
我从这个Javascript 技巧中获得了以下代码,用于在 execCommand 中“粘贴为纯文本”
我按预期工作。它给了我纯文本。
但是,虽然我想摆脱所有文本格式,但我只想保留复制文本的换行符?有没有办法修复此代码以实现此行为?
注意:举个例子,我们在 Stack Overflow 上写我们的问题的问题编辑器似乎就是这样工作的。摆脱一切,但尊重换行符。
// ALLOW TEXT ONLY ON PASTE
function onPaste(e) {
e.preventDefault();
// GET TEXT REPRESENTATION OF CLIBOARD DATA
const text = (e.originalEvent || e).clipboardData.getData('text/plain');
// INSERT TEXT MANUALLY
document.execCommand("insertHTML", false, text);
}
Run Code Online (Sandbox Code Playgroud)
片段
// ALLOW TEXT ONLY ON PASTE
function onPaste(e) {
e.preventDefault();
// GET TEXT REPRESENTATION OF CLIBOARD DATA
const text = (e.originalEvent || e).clipboardData.getData('text/plain');
// INSERT …Run Code Online (Sandbox Code Playgroud)