Этот скрипт позволяет разбивать строки текста и копировать его в буфер обмена ... но он не работает на IOS - PullRequest
0 голосов
/ 22 марта 2019

Я написал скрипт с моим коллегой, который позволяет пользователям добавлять строки разрыва в свой текст (помещая в него невидимые символы ascii - как это делает «Генератор титров IG LineBreak») и автоматически копировать результаты в буфер обмена - готовый квставлять в социальные сети или куда угодно.

Везде, где все работает, кроме ios - мы проверили это на iOS 11 и 12.

На IOS, когда функция активирована (с помощьюнажатием кнопки) просто ... ничего не происходит.Или, чтобы быть ясным: предупреждение появляется, но текст не скопирован.

Можете ли вы помочь мне найти лучший способ применить эту функцию?

(function(global) {
  global.copyToClipboard = copyToClipboard
  // MicroModal.init()

  function copyToClipboard(el) {
    el = typeof el === 'string' ? document.querySelector(el) : el

    el.value = replaceNewLines(el)

    if (isOldDevice()) {
      oldSelect(el)
    } else {
      el.select()
    }

    document.execCommand('copy')

    alert(
      'Done! Your text has been added to the clipboard: paste it on instagram to make your caption or comment beautifully readable.',
    )
    //MicroModal.show('modal-1')
  }

  function replaceNewLines(el) {
    return el.value.replace(/(?:\r\n|\r|\n)/g, '\u2063\n')
  }

  function isOldDevice() {
    navigator.userAgent.match(/ipad|ipod|iphone/i)
  }

  function oldSelect(el) {
    var editable = el.contentEditable
    var readOnly = el.readOnly

    el.contentEditable = true
    el.readOnly = true

    var range = document.createRange()
    range.selectNodeContents(el)

    var selection = window.getSelection()
    selection.removeAllRanges()
    selection.addRange(range)
    el.setSelectionRange(0, 999999)

    el.contentEditable = editable
    el.readOnly = readOnly
  }

})(this)

(ДляВо избежание недоразумений: я уже посмотрел другие посты о копировании и вставке в StackOverflow, но не смог применить предложенные решения: я ищу решение, совместимое с типом сценария в этом вопросе) * +1010 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...