Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.06.2015, 09:48
Аспирант
Отправить личное сообщение для xintrea Посмотреть профиль Найти все сообщения от xintrea
 
Регистрация: 02.01.2011
Сообщений: 56

Копирование текста в буфер обмена в браузере через 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?
Ответить с цитированием
  #2 (permalink)  
Старый 17.06.2015, 10:41
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от xintrea
Как же по-православному, кроссбраузерно, скопировать текст в буфер обмена через JavaScript?
Никак, политика безопасности браузеров запрещает это делать, только через Flash. Надпись "Блокировать" появляется из-за установленного Adblock, браузер тут не причём.
Ответить с цитированием
  #3 (permalink)  
Старый 17.06.2015, 12:40
Аспирант
Отправить личное сообщение для xintrea Посмотреть профиль Найти все сообщения от xintrea
 
Регистрация: 02.01.2011
Сообщений: 56

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

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

Понятно, что это все вилами по воде писано, но интересно, может быть есть надежный способ.
Ответить с цитированием
  #4 (permalink)  
Старый 17.06.2015, 13:33
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от xintrea
Есть ли какой-нибудь способ определить, запускается ли страница в браузере или на сервере в "песочнице"?
Ну, в браузере глобальный объект это window, на node.js другой будет. Не очень понимаю, как это с копированием в буфер обмена связано.
Ответить с цитированием
  #5 (permalink)  
Старый 17.06.2015, 14:31
Аспирант
Отправить личное сообщение для xintrea Посмотреть профиль Найти все сообщения от xintrea
 
Регистрация: 02.01.2011
Сообщений: 56

Это связано не с буфером обмена. Коль стало ясно, что с буфером обмена каши не сваришь, надо искать другие подходы. Сервер отдает ссылки в виде <span>, JavaScript в браузере преобразует их обратно в <a>. И задача в том, чтобы в песочнице поисковика это обратное преобразование в <a> не происходило.
Ответить с цитированием
  #6 (permalink)  
Старый 17.06.2015, 14:47
Аватар для KosBeg
Профессор
Отправить личное сообщение для KosBeg Посмотреть профиль Найти все сообщения от KosBeg
 
Регистрация: 22.05.2015
Сообщений: 384

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

https://support.google.com/webmaster...er/96569?hl=ru
Ответить с цитированием
  #7 (permalink)  
Старый 17.06.2015, 14:57
Аспирант
Отправить личное сообщение для xintrea Посмотреть профиль Найти все сообщения от xintrea
 
Регистрация: 02.01.2011
Сообщений: 56

Сообщение от KosBeg Посмотреть сообщение
Неа?
<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. Но я бы так поступать не хотел.

Разубедите меня что это не так, и я не буду никому компосировать мозги.
Ответить с цитированием
  #8 (permalink)  
Старый 18.06.2015, 02:27
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

xintrea,
А на этом сайте тоже возникает надпись ?
При копировании в буфер обмена ?
Пример(кнопка справо - копировать в буфер, при наведении на посмотреть):
А на этом сайте тоже возникает надпись ?
При копировании в буфер обмена ?
Пример:
Ответить с цитированием
  #9 (permalink)  
Старый 18.06.2015, 16:43
Аспирант
Отправить личное сообщение для xintrea Посмотреть профиль Найти все сообщения от xintrea
 
Регистрация: 02.01.2011
Сообщений: 56

Да, появляется. Это от AdBlock происходит.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как скопировать в буфер обмена? Gilman Элементы интерфейса 6 27.05.2018 03:15
Криво отображается SVG через Javascript Ruslan_as jQuery 3 01.08.2014 12:08
Виртуальная клавиатура и буфер обмена Artyom Общие вопросы Javascript 8 27.08.2013 10:04
копирование в Буфер при клике на картинку Павел Общие вопросы Javascript 7 14.07.2013 00:51
буфер обмена! chubrick jQuery 10 29.05.2012 22:59