Новости о браузере Firefox, и о Mozilla в частности. http://firefox-me.ru

Firefox. Копируем в буфер через execCommand copy


60c1cbd5

26th Сентябрь 2015 ;)






Всем известно что в Firefox 41 прикрутили возможность копирования в буфер через JavaScript API. Мозилла последней реализовала эту фичу.

Все было бы ясно как день если бы можно было написать так:

execCommand("copy","text");

и даже не так а вот так:
clipboardCopy("text");

но нет же.. Придумали «Чужие для Хищников» такую лопату для бабы яги что бы ни один совецкий разведчик не разобрался без бутылки водки.








Правильно так:
execCommand("copy")

ЧТА ???

Но где текст который надо копировать ?
А он батенька должен быть выделен на странице.. мышкой или чем-то там другим.

т.е. Мозилловцы подумали что если текст будет выделен и его будут копировать то это будет безопасно. Как бы не так.. Выделенной частью можно манипулировать как угодно, например так:

$('texarea').val('Что угодно, БабаЯга').select()
К чему эти ухищрения ? непонятно.. могли бы сделать простую функцию копирования в буфер.

но вариант
clipboardCopy("text");

больше похож на PHP, где пришлось бы и BOLD делать отдельной функцией. Видимо не хотели что бы количество функций росло, но и методы для объектов их тоже не устроили и ребята вовсе избавились от контекста.

Проблемма. А теперь я хочу при нажатии на кнопку «Копировать URL» скопировать URL для некоего мифического сервиса, а этот URL я должен сгенерировать на лету и запомнить на сервере.
Тогда мне надо отправить запрос, получить id записи, и сгенерировать URL с новым id.

и..

так делать нельзя !

нельзя просто так взять и скопировать в буфер после работы с POST зарпосом.
ЧЕЗА ?

$.post('http://firefox-me.ru/test.php', function(){
console.log ("новый id="+id);
// кладем его в textarea
$('texarea').val('http://firefox-me.ru/service.php?id='+id).select()
// копируем
execCommand("copy")
})

не выйдет !

а если сначала скопировать URL а потом сделать POST запрос — пожалуйста.

но как мне тогда получить id от сервера ?
Правильно.. генери его на JavaScript:

var id = Math.floor(Date.now() / 1000) ;

но это же неправильно !?!?!

Правильно! Это неправильно !
Зато с такими костылями у вас будет работать сраный отсутствующий контекст для execCommand.

«Чужие для Хищников»
«Чужие для Хищников»

ЧЕЗА

ЕПТ

ЧЗХ








Сегодня: 2020.12.01