链接内的内容可编辑块,如何防止重定向,但让文本选择插入符号位置更改
Contenteditable block inside link, how to prevent redirect but let text selectioncaret position changes?
这里是演示:http://jsfiddle.net/qh7Sq/
我希望能够在链接内编辑跨度,实际上我可以通过某些部分来防止冒泡传播块插入符号更改操作。
请不要建议不同的标记,只建议javascript。
我认为
如果不使整个链接可编辑,就不会有很好的方法来做到这一点:
$('a').prop("contentEditable", "true");
演示:http://jsfiddle.net/qh7Sq/1/
这是我的做法:
- 防止内容可编辑内容中的默认点击
- 对于 Firefox,删除并添加 href-属性以防止将光标放在 contenteditable-element 的开头
https://jsfiddle.net/e15j8oq9/1/
// if contenteditable inside a link
document.addEventListener('click', e=>{
if (e.button !== 0) return;
if (e.target.isContentEditable) {
e.preventDefault();
}
if (e.explicitOriginalTarget && e.explicitOriginalTarget.isContentEditable) { // keyboard click firefox
e.preventDefault();
}
});
// prevent (Firefox) placing cursor incorrectly
document.addEventListener('mousedown', e=>{
if (!e.target.isContentEditable) return;
var link = e.target.closest('a');
if (link) {
const href = link.getAttribute('href')
link.removeAttribute('href');
setTimeout(()=>link.setAttribute('href', href))
}
});
相关文章:
- 换行符插入jquery选择器
- jQuery:append()不是't在选择器中插入任何元素
- 链接内的内容可编辑块,如何防止重定向,但让文本选择插入符号位置更改
- 单击按钮可多次动态添加选择框、文本框和日期,并将这些值插入数据库
- 动态选择列表AJAX和插入数据库表通过张贴形式
- 在更改时选择,插入类似函数的参数或指令之间的差异
- 如何在HTML中用两个预定义的值绑定选择选项,以在mongodb中插入数据
- 如何在第n个shild('')选择器中插入变量
- 如何插入PHP'生成'选项(html选择)
- AngularJS选择检查数据并插入
- 如何创建开头插入符号和结尾带有锚点的选择
- 如何使用 Dropbox 插入式应用始终从“我的帐户”中选择文件
- 选择列表的汽车,将值插入饼干 - jQuery
- 如何使用 javascript 在表中动态插入带有选项的选择框的表行
- 在下拉列表中选择一个类别并使用文本框插入 vlue
- jQuery 日期选择器不适用于动态插入的 html 元素
- 将 JavaScript 插入多个现有页面的最佳选择
- 如何在表单.js中插入选择多个选项字段
- 插入 XML 源代码以使用 javascript 进行选择
- 在 JavaScript 函数中插入一个选择标签