У меня есть приложение (ASP.Net), которое имеет следующий клиентский Javascript для облегчения копирования в буфер обмена:
var ua = window.navigator.userAgent;
var is_ie = /MSIE|Trident/.test(ua);
if (is_ie) {
var input = document.getElementById("inputcopy"); // select it
input.value = text;
input.select();
document.execCommand("copy");
this.focus();
}
else {
navigator.clipboard.writeText(text).then(() => {
writeLog('Copy successful');
if (showalert == true) alert('Copied to clipboard');
}).catch(() => {
writeLog('Copy failed');
if (showalert == true) alert('Copy to clipboard failed');
});
}
Мы должны быть совместимы со всеми «современными» браузерами - Chrome,Firefox и не стреляйте в мессенджера, IE11.Первые два хороши, но последние ...
Поскольку IE не поддерживает navigator.clipboard
, у меня есть if (is_ie)
, что прекрасно работает.Однако IE не знает о Promise
в разделе, отличном от IE, и жутко жалуется на «Неверный синтаксис» на
navigator.clipboard.writeText(text).then(() => {
, хотя на самом деле он никогда не будетзапустите его.
Как я могу сказать IE игнорировать этот бит кода или обойти эту проблему?Я смотрел на условную загрузку отдельного файла JS на основе браузера, но это не выглядит большим удовольствием.Есть ли лучший вариант?