Запугали меня тут аналитикой сайта, на котором крутится MyTetra Share, что он может попасть в бан яндекса и гугля. А все потому, что в MyTetra собирается информация обо всем, что встречается в жизни, и я не задумываясь выкладываю прямые ссылки туда, где лежит то, о чем идет речь. Бывает, что в статье очень много ссылок, и я не предавал раньше этому большого значения. Пока не увидел вот это:
Заспамленность ссылками: 3 из 5 (9.1)
Вероятность фильтра на исх. ссылки (beta): 60%
Никогда не думал, что мне придется скрывать ссылки, но, видимо, надо.
Есть несколько механизмов сокрытия ссылок. Но все они обладают одной и той же проблемой: после сокрытия, правый клик по преобразованной ссылке в окне браузера не позволит скопировать URL ссылки в буфер обмена.
Вариант 1
Зная это, я вначале сделал финт ушами: в тексте страницы ссылки представляю как <span class=«hyperurl» url="...«>Текст</span>, а после загрузки преобразую эти теги в <a href>. Однако меня предупредили, что поисковики уже научились „выполнять“ страницу в песочнице, и индексируют как HTML код, так и обработанный. То есть, напрямую сделать так чтоб и поисковик не посчитал URL, и пользователю было удобно - нельзя.
Вариант 2
Тогда я решил воспользоваться небезызвестным ZeroClipboard (http://zeroclipboard.org). Решил сделать так: рядом с обработанной ссылкой ставить значек копирования (примерно как в википедии у внешней ссылки). При клике по ссылке - переходим по ссылке через механизм скрытия ссылок. При клике по значку копирования - копировать ссылку в буфер обмена. Немного непривычно, но хоть какая-то забота о пользователе.
Но у ZeroClipboard есть одна трабла: так как он реализуется через Flash, то в Firefox при наведении на иконку копирования появляется надпись „Блокировать...“. Она настолько ужасна, что оставлять в таком виде нельзя. (Сейчас сделано именно так (значек есть, кликать по нему, ссылки пока обычные). Пример http://webhamster.ru/mytetrashare/index/mtb0/1412253267sw0y5sfn2e)
Теперь вопрос. Как же по-православному, кроссбраузерно, скопировать текст в буфер обмена через JavaScript?