Jump to content

Jenek

User
  • Posts

    156
  • Joined

  • Last visited

Everything posted by Jenek

  1. Совпасть может по разному, например, при переходе с narod.ru на vasya.narod.ru совпадет return !'xttp://vasya.narod.ru'.replace(/?.*$/, '').match('narod.ru'); а ведь не должно Но можно попробовать так: function isLinkExternal(link) { if(link.substring(0, 1) == '/' || link == '') return false; var r = new RegExp('^(http|https)://(www.)?' + location.host.replace(/^www./, '')); return !r.test(link); } Хоть и не в одну строку но сойдет. ftp я выкинул совсем, потому что даже если он и на том же хосте, что и сайт переходы на него можно считать исходящими. Для удобства работы со статистикой ссылки нужно переформатировать пока я остановился на формате /outgoing/схема/ссылка, но не уверен, что это лучший выбор может быть у кого-нибудь есть предложения по формату ссылок.
  2. Не выйдет представим, что ссылка указана так: href="www.blogstorm.co.uk/" схемы нет, работать она не будет, а определяться как внешняя и засчитываться в статистику будет. Я именно о такой ненадежности говорю.
  3. rfc1738 - это описание формата URL: http://www.faqs.org/rfcs/rfc1738.html Часть с вложеными в <а> тегами взял ту которую вы предложили, работает отлично, а вот протестить ссылку в одну строку так и не смог (вернее смог, но не очень надежно получилось, завтра еще попробую, нужно разобраться все таки в этих регулярных выражениях). Пока получается такой код: function isLinkExternal(link) { if(link.substring(0, 1) == '/' || link == '') return false; var a = /^(http|https|ftp)://([^?#/]+)/i.exec(link); if(!a) return false; return location.host.replace(/^www./, '') != a[2].replace(/.*@/,'') .replace(/:.*/,'') .replace(/^www./, ''); } $(document).ready(function () { $(document).bind('click', function(e) { var target = (window.event) ? e.srcElement : e.target; while (target) { if (target.href) break; target = target.parentNode; } if (!target || !isLinkExternal(target.href)) return true; var link = target.href; link = '/outgoing/' + link.replace(/:///, '/'); //alert(link); return false; //тестирование urchinTracker(link); }); });
  4. Так не получится, к сожалению. Вот невыдуманный пример который пройдет как внутренняя: хттп://del.icio.us/post?url=http://designformasters.info/posts/google-analytics-advanced-use/&title=%D0%9F%D1%80%D0%BE%D0%B4%D0%B2%D0%B8%D0%BD%D1%83%D1%82%D0%BE%D0%B5+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+Google+Analytics+-+Design+For+Masters А я сразу обрадовался
  5. иногда стоит заняться чем нибудь другим, а потом вернуться к проблеме и оказывается, что это совсем не проблема. Можно не парсить урл полностью, а выхватить часть с авторизацией, хостом и портом, а потом отрезать от нее все лишнее .replace(/.*@/,'').replace(/:.*/,'') Кстати заметил, что чем дальше тем меньше становиться функция, интересно до одной строки добьем function isLinkExternal(link) { if(link.substring(0, 1) == '/' || link == '') return false; var a = /^(http|https|ftp)://([^?#/]+)/i.exec(link); if(!a) return false; return location.host.replace(/^www./, '') != a[2].replace(/.*@/,'').replace(/:.*/,'').replace(/^www./, ''); }
  6. Спасибо. Это точно решит проблему.
  7. ну его разбираться в этом коде, а передать можно так: <input type="hidden" value="<?= $result ?>" name="result" />
  8. Предложенный вами регвыр мне больше нравиться, код я переписал function isLinkExternal(link) { if(link.substring(0, 1) == '/' || link == '') return false; var a = /^(http|https|ftp)://([w.-]+)/i.exec(link); if(!a) return false; return location.host.replace(/^www./, '') != a[2].replace(/^www./, ''); } $(document).ready(function () { $(document).bind('click', function(e) { var target = (window.event) ? e.srcElement : e.target; if ((target.nodeName == 'IMG') && (typeof target.parentNode != null) && (target.parentNode.nodeName == 'A')) target = target.parentNode; if(target.nodeName == 'A') if(isLinkExternal(target.href)) { var link = target.href; link = '/outgoing/' + link.replace(/:///, '/'); urchinTracker(link); } }); }); Но c ftp есть одна проблема, адреса такого вида: ftp://user:password@somehost.name:123/directory/ (я такие не часто видел правда, но в спецификации (rfc1738) они есть) из них вместо хоста выхватывается user, получается, что потом мы проверяем не совпадает ли имя пользователя с текущим хостом, а это немного не то, что нужно. И хотя ссылки нормально отслеживаются пока имя пользователя не совпадет с текущим хостом, хотелось бы исправить эту проблемку (соображения есть если сработает отпишусь).
  9. То есть спам? Вообще-то я чтобы понятно было зачем этот скрипт и что к чему, вдруг кто-нибудь предложит более оптимальное решение проблемы в целом, часто в вопросах не хватает данных и приходится жаловаться на отсутствие плагина телепатии. Да и сервер лег еще раньше чем я тут ссылку поставил, и далеко не от наплыва посетителей, а от дохлого винта Чтобы не было никаких подозрений убрал ссылку, а чтобы их ни у кого не возникало стоит сделать все ссылки с форума nofollow. Спасибо, конечно, за подробное объяснение, но не зная этого, я вряд ли написал бы этот скрипт, мне интересно будут ли эти выражения достаточно корректно работать для всех url (предыдущая версия косячила немного, от нее здесь ничего не осталось, но я теперь весь в сомнениях), кстати наверное нужно добавить проверку на null результата exec.
  10. Написал скрипт для отслеживания исходящих ссылок через Google Analytics, но в регулярных выражениях я не мастер (мягко говоря), кто-нибудь может посмотреть скрипт, особенно длинный регексп в функции isLinkExternal. И еще, один человек сказал, что вешать обработчик на document не оптимально, куда его тогда повесить, неужели развесить по отдельным ссылкам будет оптимальней, что-то сомневаюсь? При последней проверке еще одна проблема обнаружилась если клик на изображении заключенном в ссылку то пользователь переходит по ссылке и это не учитывается. function isLinkExternal(link) { if(link.substring(0, 1) == '/' || link == '') return false; var host = location.host.replace(/^www./, ''); var a = /^([a-z]+)://([^?#/:]+)/.exec(link); //место сомнений var scheme = a[1]; var linkHost = a[2].replace(/^www./, ''); if(host != linkHost && (scheme=='http' || scheme=='https')) return true; return false; } $(document).ready(function () { $(document).bind('click', function(e) { var target = (window.event) ? e.srcElement : e.target; if(target.nodeName == 'A') if(isLinkExternal(target.href)) { var link = target.href; link = '/outgoing/' + link.replace(/:///, '/'); urchinTracker(link); } }); });
  11. Попробую, уже не одно такое предложение.
  12. Не то, чтобы руки чесались, просто на белом фоне удобней с иллюстрациями, на большинсве сайтов с которых они беруться белый фон в который они переходят, как бы без швов. Старый style.css ни куда не пропал, если с белым не удастся получить хорошую читабельность, верну.
  13. Сорри, что подымаю старую тему, но после изменения цветовой схемы, хотелось бы услышать отзывы, а больше негде. Достаточно ли контрастно и читабельно получилось? Может еще какие-нибудь недостатки. http://designformasters.info/ PS: да уж, просмотрел тему, оказывается я еще много недостатков не устранил, непорядок.
  14. <div id="partners"> <img src="test1.jpg" width="80" height="33" alt="Партнер ?1" /> <img src="test2.jpg" width="80" height="33" alt="Партнер ?2" /> <img src="test3.jpg" width="80" height="33" alt="Партнер ?3" /> ?(кол-во может варьироваться) </div> .partners { width:100%; /* или сколько там у вас */ text-align:center; }
  15. Не стучите по монитору, сломаете! Читайте: Дублирование текста в IE6, возможно, ваш случай.
  16. Jenek

    Установка PDO

    Я так понял, их смущает то, что php5 работает как CGI, а не модуль апача, но у меня на домашнем компе php5 тоже CGI, и PDO прекрасно работает (под Windows, может в Linux так нельзя?). Буду пытаться договориться и попробую dl(), спасибо.
  17. Jenek

    Установка PDO

    Попросил хостера установить PDO для php5, на что получил ответ: Кто-нибудь может объяснить в чем проблема, почему это вдруг нельзя установить PDO. Не хотелось бы менять хостинг, все отлично было до этого момента.
  18. По вашим данным задачу решить невозможно, сразу видно, вы не совсем поняли, что такое em. Нужен font-size не только самого слоя, но и всех родительских включая body, самый простой способ посмотреть сколько пикселей в em для конкретного слоя, установить FireBug (плагин для FireFox). Если вы задаете размер шрифта для body в em, это приводит к глюкам при масштабировании в ie, используйте проценти для body и em в остальных случаях.
  19. Да там еще справа лишняя ячейка шириной 10 пикселей, переверстать быстрее чем это исправить.
  20. Сначала думал * { margin:0; padding:0; } или хотя бы body {margin:0; padding:0;} И только потом посмотрел ваш сайт, а зачем так сложно сверстали, диз простой, а в коде намутили просто ****, там нужно то 4 div-а. Внешние таблицы и так прилягают к краям (посмотрите с помощью FireBug), а отступы возникают уже потом, когда вы влаживаете еще одну таблицу. Не верстайте таблицами не будет проблем, применяйте их только если, что-то не получается сделать div-ами.
  21. У вас Wordpress? тогда можно сделать так <?php $c = $wp_query->post_count; $sc = (int)($c/2); $fc = $c - $sc; ?> <ol class="first-column"> <?php while (have_posts() && $fc--) : the_post(); ?> <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Ссылка на <?php the_title(); ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ol> <ol class="second-column"> <?php while (have_posts() && $sc--) : the_post(); ?> <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Ссылка на <?php the_title(); ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ol> Поменяйте ol (я использовал его чтобы было видно сколько постов в колонках) на ul, и разместите списки рядом с помощью CSS, примерно так: .first-column, .second-column {float:left; width:50%} может придется использовать значение меньше 50%
  22. Ускорения значительного не получится, ведь и js, и css загружаются только один раз при первом посещении сайта, а вот проблем с поддержкой такой смеси наверняка не миновать. Да и вообще смешивать поведение и представление это не лучшая идея.
  23. Долго искал на фрилансе градиенты, ненашел (может не успели загрузиться) Как я понял вам нужны такие полоски как у менюшки Главная | Каталог фрилансеров | Блоги | Статьи | Магазин | Интервью Если да то это просто, у меня раньше на сайте такие были: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <style> * {margin:0; padding:0;} .center, .wide div { margin: 0 auto; width:500px; } .center { background-color:#999999;} .wide { background-color:#00FFFF;} </style> <body> <div class="center">Center top</div> <div class="wide"> <div>Wide line</div> </div> <div class="center">Center bottom</div> </body> </html>
  24. Потестил немного этот сервис, впечатлений хороших нет, простой поиск от Google эффективнее (охват шире, не 500 сайтов, а тысячи) Такой поиск хорошо бы приспособить для своего сайта, чем я и думаю заняться в ближайшее время.
  25. Технология бесплатная, как и многое у Google, по сути это обычный поиск Google только на определенных сайтах. Подробности на странице сервисов Google для разработчиков (много чего интересного есть) Полезность такого сервиса сомнительна, но за счет ручного отбора хороших сайтов качество поиска может и улучшиться, потестить стоит. Да еще забыл добавить: Она не только бесплатная, но и приносит некоторую прибыль за счет AdSense (можно и отключить, но возможно за это Google отрубит ваш поисковик, когда факт откроется)
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy