Как скопировать полученные параметры в буфер обмена в iOS Safari c помощью JS?
Получаю параметры из URL таким способом:
<span id="pwd_spn" class="password-span" style="visibility: hidden"><?php echo htmlspecialchars($_GET["clickid"]) . ':' . htmlspecialchars($_GET["device"]) . ':' .
htmlspecialchars($_GET["country"]);?></span>
Затем эти параметры нужно скопировать в буфер обмена. Но код, который я использую не работает в iOS >=11. Нашёл код, который должен решить эту проблему:
function iosCopyToClipboard(el) {
var oldContentEditable = el.contentEditable,
oldReadOnly = el.readOnly,
range = document.createRange();
el.contentEditable = true;
el.readOnly = false;
range.selectNodeContents(el);
var s = window.getSelection();
s.removeAllRanges();
s.addRange(range);
el.setSelectionRange(0, 999999);
el.contentEditable = oldContentEditable;
el.readOnly = oldReadOnly;
document.execCommand('copy');
}
Как мне сделать чтобы этот код копировал полученные параметры при нажатии на кнопку?
Ответы (1 шт):
Автор решения: Eugene Kuznetsov
→ Ссылка
У вас не получится скопировать в буффер данные, которые содержит ваш , так как стиль у него "visibility: hidden", скройте текст каким-то другим способом, ниже работающий пример.
const cobyToBuffer = () => {
const textToBuffer = document.getElementById("pwd_spn"),
range = document.createRange();
range.selectNode(textToBuffer);
window.getSelection().addRange(range);
try {
document.execCommand('copy');
} catch (err) {
console.log(err);
}
window.getSelection().removeAllRanges();
}
const btn = document.getElementById("startCopy");
btn.addEventListener("click", cobyToBuffer, false);
#pwd_spn{
color: transparent;
}
<span id="pwd_spn" class="password-span">example:return:from:php:query:params</span>
<button id="startCopy">Copy to buffer</button>