Pull to refresh

Comments 51

Это горе пошло еще с IE6. Оно так же существует и в IE8.

Как от этого избавиться? Я делаю так.

ссылка

$(«a»).click(function(){
var a = $(this).attr(«href»).toString().split("#")[1];
});
Почему-то не прописалось :(
Повторяю через редактор:

Есть HTML код:
<a href=«1»>ссылка</a>

* This source code was highlighted with Source Code Highlighter.

Есть конструкция Jquery:

$(«a»).click(function(){
var a = $(this).attr(«href»).toString().split("#")[1];
});

* This source code was highlighted with Source Code Highlighter.

Спасибо. как это не странно в ИЕ8 под windows7 мой скрипт сработал правильно… значит возвращается по крайней мере там «1» ))))
За решение огромное спасибо очень интересно!
<a href="1">ссылка</a>

не фирштейн. при чем здесь якоря (#) если в статье речь идет об relative ссылке на «страницу» «1»?
зачем сплит? откуда возьмется элемент [1]?
Перед единичкой # должен стоять. Почему то дважды не пропечатался он :(
только в задаче "#" отсутствует. или он и там «не пропечатался»?
ужас, если используется href='#abc', то работает

$(this).attr('hash')
Для надежности надо писать так
a.getAttribute(«href»,2)
тогда там всегда будет то, что положили
Получается баг jquery, ее и делали, чтобы везде работало одинаково, ан нет, за всем не уследишь :)
getAttribute — это не функция jQuery, это стандартный javascript. Просто нужно внимательно читать доки, когда работаете с «неправильными» браузерами =)
что-то я туплю, извините. И откуда у меня getAttribute в мозгу обосновался?
UFO just landed and posted this here
Вы уверены? у меня другие результаты (правда, для иллюстрации я использовал гипотетический пример. реальный код намного сложнее)
jQuery под рукой нету, но код
<a href="1" onclick="alert(this.href);return false;">ссылка</a>

* This source code was highlighted with Source Code Highlighter.

выдаёт мне полный путь.
Вы много не чисто повторили условия эксперимента…

<html>
 <head>
  <script type="text/javascript" src="/jquery.js"></script>
  <style>
   
  </style>
  <script type="text/javascript">
   $(document).ready(function(){
     $(".a123").click(function(){
      var a = $(this).attr("href");
      alert(a);
     });
   });
  </script>
 </head>
 <body>
  <a href="1" onclick="alert(this.href);return false;">ссылка</a>
  <a href="1" class="a123" >ссылка1</a>
 </body>
</html>


* This source code was highlighted with Source Code Highlighter.


Нажатие на Ваш вариант возвращает полный путь на тот который был указан в моей статье возвращает в ФФ цифру «1»
Поздравляю. А теперь узнайте, что атрибут тега и свойство объекта — 2 большие разницы.
Каким образом это замечание объясняет то, что один браузер возвращает одно а другой другое?
Это замечание прекрасно объясняет, почему Garrett получает такой результат для alert(this.href) в фф.
Не точное повторение условий эксперимента…
UFO just landed and posted this here
Покопался в jquery.
В случае автора, его проблема в том что в его случае jquery получает значение атрибута через
elem[«href»]
вместо
elem.getAttribute(«href»);

Мобишь вместо этого кода:
var attr = !jQuery.support.hrefNormalized && notxml && special
  // Some attributes require a special call on IE
  ? elem.getAttribute( name, 2 )
  : elem.getAttribute( name );


Отрабатывается:
elem[ name ];


Пример =)
<a id="lin" href="1" onclick="alert(this.getAttribute('href')+' '+this['href']);return false;">ссылка</a>
«Мобишь вместо этого кода: Отрабатывается:»
не могу понят, почему вы так решили? Просмотрел по исходникам (к сожалению, без дебагера), обрабатывается именно elem.getAttribute( name, 2 ).

Автор, может быть закатаете свой пример куда-нибудь на сервер, а то смотреть не из дома очень не удобно?
Спасибо, как оказалось на этом компьютере эксплорер тупит те только на локальных файлах, так что простите, сегодня ничего не смогу посмотреть.
Ну, собственно вторая ссылка во всех браузерах выводит «1». Получается, топик вообще не верен, или как?
Первая ссылка всегда полный путь.
Вторая всегда короткий.
Это IE8 в IE7 Mode.
Странно но подтверждаю))) на моем сервере в интернете дало абсолютно другую картину, нежели на сервере проекта, на котором я первоначально, тестировал…
значит условия более сложные нежели — работа в ИЕ7)))
this['href'] и this.href не могут отличаться, это разные нотации доступа к одному и тому-же.
UFO just landed and posted this here
UFO just landed and posted this here
Уф, жутко извеняюсь, просто день сумбурный и многое перепутал.
Под «Да, точно» я имел ввиду что вы правы.
Это всё от нецелевого использования элемента A (особенно в случае с комментарием second_pilot). Если href ссылается на некий другой документ, то абсолютный адрес выдаст javascript или относительный, в 99% случаев должно быть абсолютно без разницы.
хм… я уже писал, что пример в тексте сильно упрощен для обозначения проблемы.
а реальность…
На странице сайта есть два вида ссылок. внутренние — /data.php
и внешние которые как им и положено начинаются с протокола. При клике мышкой по ссылке я анализирую какая именно ссылка используется, и если внутренняя то пользователю гружу ее аяксом, если внешняя то ничего не делаю))) даю пользователю открыть другой сайт.
В таком случае уже достаточно критично что именно возвращается…
Всё равно это не выход. Если Вы укажете внутреннюю ссылку на том же домене, что и ваш сайт, но укажете абсолютно, Ваш скрипт ошибется и сработает неправильно. Вешайте, к примеру, класс «internal» или «ajax» и по нему определяйте.
UFO just landed and posted this here
Тогда должен сработать такой вариант:

$(document).ready(function(){
      $("a").click(function(){
            var a = $(this).attr("href");
            if ((a.indexOf("http") != -1) && (a.indexOf("your domain") == -1)) alert("Внешние")
            else alert("Внутренние");
      });
});
да должен и несомненно будет работать)))
ajax это часть проекта… можно я не буду здесь приводить все 23 страницы технического задания? просто поверьте на слово, описанное в топике было очень критично )))
ну на 100% в их отсутствии Вы не можете быть уверены.....)))))))
это да))) кто знает что он выкинет завтра))) а после обновления!)
UFO just landed and posted this here
Проблем с этим не вижу.
В случаях, когда нужен атрибут «href» его можно использовать и так и так, т.е. как полный путь, так и неполный.
вариантов, когда это критично предостаточно… один из примеров приводил выше в комментариях
Я все внешние ссылки отбрасываю вот так:

function aClick(anker) {
var href = anker.getAttribute('href');
href = href.replace('http://'+window.location.host, '');

if (href.match(/http:\/\//i)) return true;

$(window).history('add', href);

return false;
}
Sign up to leave a comment.

Articles