Многие методы document.execCommand (например, копирование) требуют взаимодействия с пользователем (например, щелчка), поскольку считается, что получение доступа к буферу обмена (на уровне системы, а не на уровне браузера) с помощью автоматических методов, таких какпросят.Возможно, вам придется переосмыслить то, что вы пытаетесь достичь, копируя при загрузке страницы.
Каков вариант использования выше, и, возможно, кто-то может помочь с вашим сценарием?
[edit] Вот ссылка , которая показывает ваш скрипт на codepen.Когда вы «запускаете» страницу, она должна выдавать «не работает», когда вы нажимаете кнопку, она должна давать «обработанный» вывод
<!DOCTYPE html>
<html lang="en">
<head>
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<script>
function copyToClipboard(element) {
var $temp = $("<input>");
$("body").append($temp);
$temp.val($(element).text()).select();
var status = document.execCommand("copy");
if(status){
$("#output").text("worked")
}else{
$("#output").text("didn't work")
}
$temp.remove();
}
</script>
</head>
<body onload="copyToClipboard('#p1')">
<p id="p1">Text to copy on page load, but won't work</p>
<button onclick="copyToClipboard('#p1')">Copy the text</button>
<p id="output"></p>
</body>
</html>
Если это для локального проекта (т.е. не будет в открытом доступе), возможно, есть флаги, которые вы можете установить в chrome, чтобы переопределить угрозу безопасности, но яне знаю, кто они и существуют ли они, но, возможно, стоит посмотреть.
[обновленное редактирование] Я очень смущен чем-то.Это похоже на полный взлом, но это работает для меня (на glitch.com), так что я могу быть исправлен.Я использовал встроенный метод navigator.clipboard.writeText, и он не работал, НО, когда я пытался использовать оба метода бок о бок (в chrome), чтобы проверить, что оба не будут работать, он сделал работа для "навигатора".Оказывается, если я поместил document.execCommand где-нибудь до выполнения обещания, то, похоже, он работает.НО это не работает на codepen или здесь в механизме встроенных сценариев (может быть связано с iframes и т. Д.?).Может ли кто-нибудь проверить мое здравомыслие, пожалуйста?
- Не работает (для меня) встроенный в этом посте
- Не работает (для меня) в codepen
- Работает (для меня) на глюк
<!DOCTYPE html>
<html lang="en">
<head>
<script>
function copyToClipboard(element) {
document.execCommand("copy");
var text = document.querySelector(element).textContent;
var output = document.getElementById("output");
navigator.clipboard.writeText(text).then(function() {
output.textContent = "worked";
}, function() {
output.textContent = "didn't work";
});
}
</script>
</head>
<body onload="copyToClipboard('#p1')">
<p id="p1">Text to copy on page load.</p>
<button onclick="copyToClipboard('#p1')">
Click to copy text
</button>
<p id="output"></p>
</body>
</html>