javascript - 剪切和粘贴不从 html 元素中获取所有属性/属性
问题描述
我有一个动态添加到可竞争 div 的 div;添加的内容如下所示:
<div><a onclick='my_function()'>HELLO</a></div>
因此,当有人点击 HELLO 时,my_function 会调用。效果很好。
但我想允许用户从 contenteditable div 中剪切这个元素并将其粘贴到其他地方。
剪切和粘贴在浏览器中按预期工作,所有格式保持一致。但是我丢失了元素内的 onclick 属性。因此,当用户粘贴内容时,它看起来像这样:
<div><a>HELLO</a></div>
有没有办法在保留其 html 中的所有属性/属性的同时剪切和粘贴内容?
我曾尝试使用 jQuery 来捕获剪切和粘贴事件,如下所示:
$(".editable_div").on('cut', function(event) {
cut_content = event.currentTarget.innerHTML;
})
$(".editable_div").on('paste', function(event) {
$(this).append(cut_content)
})
以及其他变体,确保“cut_content”在全球范围内可用。似乎没有任何效果。
解决方案
你需要使用preventDefault()
演示:(ctrl + x)
function my_function(){
console.log('foo');
}
//sample function to add dynamic div
function addDynamicDiv(){
$('#firstDiv').append("<div><a onclick=\'my_function()\'>HELLO</a></div>");
}
$(document).ready(function(){
var cut_content;
$(".editable_div").on('cut', function(event) {
cut_content = event.currentTarget.innerHTML;
})
$(".editable_div").on('paste', function(event) {
event.preventDefault();
$(this).html(cut_content);
})
$(".editable_div").on('click', function(event) {
document.execCommand('selectAll',false,null);
});
//execute adding of dynamic div when document is ready
addDynamicDiv();
});
.editable_div{
border: 1px solid black;
height: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div id="firstDiv" class="editable_div" contenteditable="true"></div>
<br><br>
<div class="editable_div" contenteditable="true"></div>
</body>
推荐阅读
- laravel - 如何将 spatie/laravel-feed 内容类型设置为 xml?
- javascript - 如何仅在谷歌网站上刷新嵌入的内容?
- git - 如何与其他 git 存储库共享文件夹/文件
- python - AttributeError:“Redis”对象没有属性“pubsub”
- python - Webscraping Google 新闻页面:获取 AttributeError:'NoneType' 对象没有属性 'find_all'
- azure - 如何查看服务主体具有贡献者访问权限的 azure 订阅列表?
- javascript - 捕捉错误films.map 不是 React 中的函数
- jenkins-pipeline - 在詹金斯的集成机器人框架中出现错误驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性设置
- c++ - 新模板实例化会破坏 ABI 吗?
- kotlin - 我在 kotlin 中有两个字符串列表,如何将第一个列表的每个元素与第二个列表的元素连接到相应的位置?