gpt4 book ai didi

javascript - Range = document.getSelection().getRangeAt(0) 在 Safari 上不起作用

转载 作者:行者123 更新时间:2023-11-29 10:26:12 24 4
gpt4 key购买 nike

我的网站上有一项功能,可以在点击时复制电子邮件地址。它在 Chrome 上完美运行,但在 Safari 上无法选择文本。我可以做些什么来让它在 Safari 上也能正常工作吗?

enter image description here

这是一个带有相应代码的 fiddle : https://jsfiddle.net/zsoltszilvai/odbxze9j/12/

function myFunction3() {
var copyText = document.getElementById("myInput3"),
range = document.getSelection().getRangeAt(0),
tooltip = document.getElementById("myTooltip3");

range.selectNode(copyText);
document.execCommand("Copy");
tooltip.innerHTML = "Copied";
}

function outFunc3() {
var tooltip = document.getElementById("myTooltip3");
tooltip.innerHTML = "Click to copy";
}

最佳答案

<!DOCTYPE html>
<html>

<body>
<style media="screen">
.tooltip {
position: relative;
display: inline-block;
}

.tooltip:hover {
border-bottom: dotted 1px grey;
cursor: pointer;
}

.tooltip .tooltiptext {
visibility: hidden;
font-size: 18px;
width: 120px;
background-color: black;
color: white;
text-align: center;
border-radius: 2px;
padding: 8px;
position: absolute;
z-index: 1;
bottom: 150%;
left: 50%;
margin-left: -60px;
opacity: 0;
transition: opacity 0.3s;
}

.tooltip .tooltiptext::after {
content: "";
position: absolute;
top: 100%;
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: #555 transparent transparent transparent;
}

.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
</style>


<html>

<body>

<h1>
Hello there
</h1>

<p>Write me an email to <span class="tooltip"><span onclick="myFunction3()" onmouseout="outFunc3()" id="myInput3">hello@johndoe.com</span> <span class="tooltiptext" id="myTooltip3">Click to copy</span> </span> or just contact me on social media.</p>

</body>

</html>

<script type="text/javascript">
function myFunction3() {
var copyText = document.getElementById("myInput3");
var range = document.createRange();
selectText('myInput3')

tooltip = document.getElementById("myTooltip3");

document.execCommand("Copy");
tooltip.innerHTML = "Copied";
}

function outFunc3() {
var tooltip = document.getElementById("myTooltip3");
tooltip.innerHTML = "Click to copy";
}

function selectText(element) {
var text = document.getElementById(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);
} else {
alert("none");
}
}
</script>

</body>

</html>

不同的浏览器可能有不同的选择内容的方式,所以我在这里写了一个selectText方法,在Safari上可以正常工作。

关于javascript - Range = document.getSelection().getRangeAt(0) 在 Safari 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58669383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com