IE11: копирование window.location.origin в буфер обмена работает неправильно - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть функция, которая должна скопировать window.location.origin в буфер обмена для вставки пользователем:

  <OptionButton
    onClick={() => this.copyLink(`${window.location.origin}/calc/${apiId}/${formatScenarioName(database.api.scenarioName || database.inputs.scenarioName)}`)}
  >
    Copy Link
  </OptionButton>



  copyLink(value) {
    const tempInput = document.createElement('input')
    tempInput.style = 'position: absolute; left: -1000px; top: -1000px'
    tempInput.value = value
    document.body.appendChild(tempInput)
    tempInput.select()
    document.execCommand('copy')
    document.body.removeChild(tempInput)
    message.success('Link copied to clipboard!')
  }

Хотя это работает в любом другом браузере, это не работает в IE11.Я попытался включить реагирующий маршрутизатор, но требование состоит в том, чтобы иметь полную ссылку, а не только параметры.Однако обходной путь, который я также пробовал, просто добавляет window.location.href, но это не очень динамично.

Есть ли для этого в IE11 полифилл?Или обходной путь к этому?

1 Ответ

0 голосов
/ 05 декабря 2018

Это прозвучало немного, когда я искал полизаполнение в прошлом.

Что-то, что я использую по всей моей кодовой базе, так что вам, возможно, понадобятся небольшие изменения, чтобы вписаться в React, скорее всего:

/**
  * Polyfill for window.location
  * @inner {string} origin fix IE11 on windows 10 issue
  * @inner {string} hash fix # inconsistency
  * @return {Object<Location>} window.location
  * @see https://connect.microsoft.com/IE/feedback/details/1763802/location-origin-is-undefined-in-ie-11-on-windows-10-but-works-on-windows-7
  * @see /1037499/poluchenie-url-adresa-i-ego-ispolzovanie-v-jquery
  */
    location: (function (loc) {
        return loc.origin
            ? loc
            : (function () {
                var origin =
                    loc.protocol + '//' + loc.hostname + (loc.port ? ':' + loc.port : ''),
                    hash = loc.hash.replace('#', '');

                try {
                    Object.defineProperty(loc, {
                        origin: {
                            value: origin,
                            enumerable: true
                        },
                        hash: {
                            value: '#' + hash,
                            enumerable: true
                        }
                    });
                } catch (e) {
                    loc.origin = origin;
                    loc.hash = hash;
                }

                return loc;
            })();
    })(window.location),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...