Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Копирование текста в буфер обмена в браузере через JavaScript (https://javascript.ru/forum/dom-window/56457-kopirovanie-teksta-v-bufer-obmena-v-brauzere-cherez-javascript.html)

xintrea 17.06.2015 09:48

Копирование текста в буфер обмена в браузере через JavaScript
 
Запугали меня тут аналитикой сайта, на котором крутится MyTetra Share, что он может попасть в бан яндекса и гугля. А все потому, что в этом проекте собирается информация обо всем, что встречается в жизни, и я не задумываясь выкладываю прямые ссылки туда, где лежит то, о чем идет речь. Бывает, что в статье очень много ссылок, и я не предавал раньше этому большого значения. Пока не увидел вот это:

Код:

    Заспамленность ссылками: 3 из 5 (9.1)

    Вероятность фильтра на исх. ссылки (beta): 60%

Никогда не думал, что мне придется скрывать ссылки, но, видимо, надо.

Есть несколько механизмов сокрытия ссылок. Но все они обладают одной и той же проблемой: после сокрытия, правый клик по преобразованной ссылке не позволит скопировать URL ссылки в буфер обмена.


Вариант 1

Вначале я сделал финт ушами: в тексте страницы ссылки представляю как

Код:

<span class=«hyperurl» url="...«>Текст</span>
а после загрузки преобразую эти теги в <a href> через JavaScript. То есть, ссылки для браузера остаются обычными. Однако меня предупредили, что поисковики уже научились „выполнять“ страницу в песочнице, и индексируют и HTML страницы, и обработанный HTML-код. То есть, напрямую сделать так чтоб и поисковик не посчитал URL, и пользователю было удобно - нельзя.


Вариант 2

Тогда я решил воспользоваться небезызвестным ZeroClipboard (http://zeroclipboard.org).

Решил сделать так: рядом с обработанной ссылкой ставить значек копирования (примерно как в википедии у внешней ссылки). При клике по ссылке - переходим по ссылке через механизм скрытия ссылок. При клике по значку копирования - копировать ссылку в буфер обмена. Немного непривычно, но хоть какая-то забота о пользователе.

Но у ZeroClipboard есть одна трабла: так как он реализуется через Flash, то в Firefox при наведении на иконку копирования появляется надпись „Блокировать...“. Она настолько ужасна, что оставлять в таком виде нельзя. (Сейчас сделано именно так (значек есть, кликать по нему, ссылки пока обычные). Пример http://webhamster.ru/mytetrashare/in...3267sw0y5sfn2e)

Теперь вопрос. Как же по-православному, кроссбраузерно, скопировать текст в буфер обмена через JavaScript?

Sigizmund2012 17.06.2015 10:41

Цитата:

Сообщение от xintrea
Как же по-православному, кроссбраузерно, скопировать текст в буфер обмена через JavaScript?

Никак, политика безопасности браузеров запрещает это делать, только через Flash. Надпись "Блокировать" появляется из-за установленного Adblock, браузер тут не причём.

xintrea 17.06.2015 12:40

Цитата:

Сообщение от Sigizmund2012 (Сообщение 375376)
Никак, политика безопасности браузеров запрещает это делать.

Тогда подойдем к проблеме с другой стороны. Есть ли какой-нибудь способ определить, запускается ли страница в браузере или на сервере в "песочнице"?

Например, если делать песочницу на сервере, то делать будут на базе готовых технологий, возможно, через node.js. Вот как бы в JavaScript определить среду выполнения (помимо User Agent), чтобы для песочницы не выполнять преобразование <span> в <a>?

Понятно, что это все вилами по воде писано, но интересно, может быть есть надежный способ.

Sigizmund2012 17.06.2015 13:33

Цитата:

Сообщение от xintrea
Есть ли какой-нибудь способ определить, запускается ли страница в браузере или на сервере в "песочнице"?

Ну, в браузере глобальный объект это window, на node.js другой будет. Не очень понимаю, как это с копированием в буфер обмена связано.

xintrea 17.06.2015 14:31

Это связано не с буфером обмена. Коль стало ясно, что с буфером обмена каши не сваришь, надо искать другие подходы. Сервер отдает ссылки в виде <span>, JavaScript в браузере преобразует их обратно в <a>. И задача в том, чтобы в песочнице поисковика это обратное преобразование в <a> не происходило.

KosBeg 17.06.2015 14:47

Неа?
<a href="spam-site.ru" *!*rel="nofollow"*/!*>Сюда</a>

https://support.google.com/webmaster...er/96569?hl=ru

xintrea 17.06.2015 14:57

Цитата:

Сообщение от KosBeg (Сообщение 375432)
Неа?
<a href="spam-site.ru" *!*rel="nofollow"*/!*>Сюда</a>

https://support.google.com/webmaster...er/96569?hl=ru


Сам Гоголь и пишет:

Цитата:

Правила Google и примеры использования nofollow

Распространенные случаи применения nofollow:

Ненадежный контент. Если вы не можете или не хотите поручиться за содержание страниц, на которые ведут ссылки с вашего сайта (например, из комментариев пользователей), следует вставлять в теги таких ссылок rel=«nofollow». Это сократит количество спама и поможет исключить непреднамеренную передачу значения PageRank с сайта недобросовестным пользователям. В частности, спамеры могут оставить ваш сайт в покое, если увидят, что к непроверенным ссылкам добавляется rel=«nofollow». Если требуется распознавать и поощрять авторов, достойных доверия, то можно автоматически или вручную удалять nofollow из ссылок высокого качества.

Платные ссылки. Позиция сайта в результатах поиска Google отчасти зависит от результатов анализа других сайтов, ссылающихся на него. Чтобы платные ссылки не влияли на результаты поиска, советуем использовать для таких ссылок nofollow . Правила поисковых систем требуют предоставлять автоматически считываемую информацию о платных ссылках, так как потребителям важно отличать коммерческие материалы от обычных (например, объявление на всю страницу в газете может иметь пометку «На правах рекламы»). Подробнее о принципах Google в отношении платных ссылок...

У меня же ссылки на надежные сайты. Я понимаю, что всем пофигу на других, поставил nofollow и без разницы, что в копилочке статистики у надежного ресурса снизится рейтинг только потому, что кто-то другой сделал на него ссылку с nofollow. Но я бы так поступать не хотел.

Разубедите меня что это не так, и я не буду никому компосировать мозги.

Deff 18.06.2015 02:27

xintrea,
А на этом сайте тоже возникает надпись ?
При копировании в буфер обмена ?
Пример(кнопка справо - копировать в буфер, при наведении на посмотреть):
А на этом сайте тоже возникает надпись ?
При копировании в буфер обмена ?
Пример:

xintrea 18.06.2015 16:43

Да, появляется. Это от AdBlock происходит.


Часовой пояс GMT +3, время: 15:36.