bootstrap 4 에서 modal 창이 떠 있을 때 javascript 로 clipboard 에 text 를 복사려 하려고 했는데, 잘 동작하지 않았다.
일반적으로 clipboard 에 text 를 복사하는 동작은 보통 아래 처럼 구현한다.
function copyToClipboard(val) {
var t = document.createElement("textarea");
document.body.appendChild(t);
t.value = val;
t.select();
document.execCommand('copy');
document.body.removeChild(t);
}
body 에 textarea 를 추가하고, 거기에 copy 하고 싶은 text 를 집어 넣는다. 그리고 그 textarea 를 선택해서 copy 명령어를 보낸다. copy 가 끝나면 불필요한 textarea 를 삭제한다. 이 코드는 ios safari 에서도 잘 동작한다.
어째든 이렇게 코드를 구현했는데, bootstrap modal 창이 떠 있을 때 이상하게 동작하지 않았다. (물론 원인도 한 참 후에 알게 되었다. ). 결국 찾아보니 stackoverflow 에 답이 있었다.
https://stackoverflow.com/a/48147679/6652082
$.fn.modal.Constructor.prototype._enforceFocus = function() {};
이렇게 처리 하면 된다.