Prevents scroll jump on iOS when using "data-clipboard-text"

Thanks to @geraldarthur at #369
This commit is contained in:
Zeno Rocha 2017-02-07 21:56:42 -08:00
parent 63d1b0f014
commit 3696739e5e
4 changed files with 13 additions and 5 deletions

13
dist/clipboard.js vendored
View File

@ -240,9 +240,19 @@ function select(element) {
selectedText = element.value;
}
else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {
element.focus();
var isReadOnly = element.hasAttribute('readonly');
if (!isReadOnly) {
element.setAttribute('readonly', '');
}
element.select();
element.setSelectionRange(0, element.value.length);
if (!isReadOnly) {
element.removeAttribute('readonly');
}
selectedText = element.value;
}
else {
@ -452,7 +462,6 @@ module.exports = E;
this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';
// Move element to the same position vertically
var yPosition = window.pageYOffset || document.documentElement.scrollTop;
this.fakeElem.addEventListener('focus', window.scrollTo(0, yPosition));
this.fakeElem.style.top = yPosition + 'px';
this.fakeElem.setAttribute('readonly', '');

File diff suppressed because one or more lines are too long

View File

@ -12,7 +12,7 @@
],
"dependencies": {
"good-listener": "^1.2.0",
"select": "^1.0.6",
"select": "^1.1.1",
"tiny-emitter": "^1.0.0"
},
"devDependencies": {

View File

@ -64,7 +64,6 @@ class ClipboardAction {
this.fakeElem.style[ isRTL ? 'right' : 'left' ] = '-9999px';
// Move element to the same position vertically
let yPosition = window.pageYOffset || document.documentElement.scrollTop;
this.fakeElem.addEventListener('focus', window.scrollTo(0, yPosition));
this.fakeElem.style.top = yPosition + 'px';
this.fakeElem.setAttribute('readonly', '');