![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Stampede |
|
||||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 4 Всего: 144 |
Мда, смешное слово получилось: "покроссбраузернее"
В общем, идея такая. Сколько человечество себя помнит, люди всегда мечтали заполучить способ отслеживания уходов с сайта по внешним ссылкам. Например, чтобы оценить эффективность баннеров своими силами, а не полагаясь на статистику баннерообменника. Можно, конечно, ссылки на внешние ресурсы делать примерно такого вида: /redir.htm?url=your.external.link.com. Работать будет хорошо, но смотреться - некрасиво, особенно в строке статуса. Знающему человеку сразу станет ясно, что за ним как бы подсматривают. А люди не любят, когда за ними подсматривают. Люди хотят, что если вы ссылаетесь на сайт фирмы IBM, то чтобы и линк был простой и понятный: http://ibm.com, без всяких там выкрутасов. Поэтому лучше подсматривать так, чтобы никто ни о чем не догадывался. Покя я держался в стороне от JavaScript, я думал, что решения не существует. Но когда втыкнул, какая моща скрывается за его уродливым фасадом, то тут меня сразу и осенило. Действительно, нет ничего проще! Вот примерный алгоритм не псевдокоде:
В общем, так примерно все и сделал, работает почти нормально, но в лисе и опере после открытия нового окна отрабатывает таки клик на оригинальный линк, и основное окно перезагружается. Как бы это дело пресечь? Привожу упрощенный код (рабочий):
Пробовал в addEventListener указывать и true, и false - ничего не помогает. Идеи? -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
||||
|
|||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 4 Всего: 144 |
Все, почти починилось - спасибо Aliance и Sardar за статью Все о событиях. Добавил в конце обработчика такой код:
Теперь вылезла новая засада: перехват не срабатывает (естественно), если переход инициируется из контекстного меню. Нет ли какого общего события именно по переходу по ссылке? Глянул в MSDN - ничего похожего не обнаружил. Это сообщение отредактировал(а) Stampede - 1.11.2005, 21:21 |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 4 Всего: 144 |
Вот, выложил для наглядности. Работу скрипта в действии можно заценить вот здесь
|
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 10 Всего: 360 |
А почему бы не пробежаться по всем ссылкам и не навесить своего редиректа? Шифруемся?
|
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 4 Всего: 144 |
П-переведи? Переопределить href? Для этого и JavaScript не нужен: все можно было бы сделать еще на сервере. Идея-то ведь сделать так, что человек заходит, видит линк, наводит на него мышкой и видит кристально чистый УРЛ. Даже если полезет в сорцы, опять же видит чистейший незамутненный HTML: <a href="http://ibm.com">IBM</a>. Никаких подвохов, все в открытую! А джаваскрипты, да еще внешние - кто же их просматривает? Да, и если кому-то в этом видится нечто "неэтичное", то я должен специально пояснить: мы в данном случае собираем статистику не по юзерам (по юзерам, конечно, тоже - как и любой другой сайт), а по рекламодателям (или любым другим внешним ресурсам), как средство анализа эффективности ссылок. А почему шифруемся - чтобы не отпугивать юзеров, которым по большому счету до этого вообще никакого дела не должно быть. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Странный юзер... к ссылкам так критично относиться...
Xотя ты прав, по опыту уже выработался рефлекс копировать "особую" ссылку и вставлять в адрес на прямую, т.к. сайт со счётчиком почти всегда жутко тормозит, ждать по 3-5 секунд пока он разродиться статистикой не хочеться. return false по идее не должен работать только в ИЕ из за отстойности работы attachEvent. Xотя preventDefaut() это конечно же правильней, т.к. по стандарту. ИЕ естественно сего метода у event не имеет, для него нужно добавить event.returnValue=false;. А вообще изврат ИМXО -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 4 Всего: 144 |
Никакой и не изврат, а очень простое и эффективное средство убить сразу нескольких зайцев: - открывать внешние ссылки в новом окне без явного указания (уже уволенного в запас) аттрибута target="_blank"; - отлавливать уходы; - можно автоматически добавлять link.title="Ссылка откроется в новом окне", если title не определен. И все это одним простеньким джаваскриптом, который один раз написал - и забыл. Тогда как чтобы сделать то же самое на стороне сервера, придется попотеть, плюс всегда будет оставаться вероятность, что где-то чего-то недоглядишь. Так штаааа... |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Единственное за это target, я всегда верстаю в HTML4.01 Strict и дотошно отношусь к валидации, но когда нужно таки открыть ссылку в новом окне я плюю на толстолобиков из W3C и использую target, т.к. не требует JS, наглядней и лучше.
Извратом назвал затею, не решение, хотя gmail тоже извратом называют, а удобно -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |