需求:在使用一下AI改写工具文字时,需要频繁地全部选中人,然后ctrl+a全部选中,能不能直接点击一下就全部选中并复制呢?
问题:是否需要绑定事件,不需要!
使用方法,直接打开console粘贴进控制台,或写入脚本
window.onclick = function (e) {
// 获取点击元素对象
var element = document.elementFromPoint(e.clientX,e.clientY);
//====修改1====,根据非触发区最高级的父element,设置非触发区
var pareElet = document.getElementsByClassName("w-full h-32 md:h-48 flex-shrink-0")[0]
var pareElet2 = document.getElementsByTagName("textarea")[0].parentNode.parentNode.parentNode.parentNode
// 最初的需求:获取点击元素的类名并弹窗显示
//alert(element.classList);
// 让你看到自己选中复制的内容
//复制命令
// 检查是否在父element下的element
if( isParent(element,pareElet) == false && isParent(element,pareElet2) == false ){
selectText(element)
console.log("element")
console.log(element)
console.log("pareElet")
console.log(pareElet)
console.log("copy")
booll = document.execCommand("Copy");
}else{
console.log("focus")
//====修改2====,是否需要点击触发全选
element.setSelectionRange(0,element.value.length)
element.focus()
}
}
function selectText(element) {
var text = element
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(text);
selection.removeAllRanges();
selection.addRange(range);
}
function isParent (obj,parentObj){
while (obj != undefined && obj != null && obj.tagName.toUpperCase() != 'BODY'){
// console.log("judge")
if (obj == parentObj){
return true;
}
obj = obj.parentNode;
// console.log(obj)
}
return false;
}
//version1 错误示范,无法选中文本框
window.onclick = function (e) {
// 获取点击元素对象
var element = document.elementFromPoint(e.clientX,e.clientY);
// 获取点击元素的类名并弹窗显示
//alert(element.classList);
// 让你看到自己选中复制的内容
selectText(element)
//复制命令
booll = document.execCommand("Copy");
}
function selectText(element) {
var text = element
if (document.body.createTextRange) {
var range = document.body.createTextRange();
range.moveToElementText(text);
range.select();
} else if (window.getSelection) {
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(text);
selection.removeAllRanges();
selection.addRange(range);
/*if(selection.setBaseAndExtent){
selection.setBaseAndExtent(text, 0, text, 1);
}*/
} else {
alert("none");
}
}
方法二:使用clipboard库(待尝试)
//@require https://cdn.bootcss.com/clipboard.js/2.0.1/clipboard.min.js
//需要库
var clipboard = new ClipboardJS('.body', {
text: function() {
return copyValue;
}
});
clipboard.on('success', function(e) {
console.log(e);
});
clipboard.on('error', function(e) {
e.clearSelection();
console.log(e);
});