Comments 51
Это горе пошло еще с IE6. Оно так же существует и в IE8.
Как от этого избавиться? Я делаю так.
ссылка
$(«a»).click(function(){
var a = $(this).attr(«href»).toString().split("#")[1];
});
Как от этого избавиться? Я делаю так.
ссылка
$(«a»).click(function(){
var a = $(this).attr(«href»).toString().split("#")[1];
});
+8
Почему-то не прописалось :(
Повторяю через редактор:
Есть 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.
Повторяю через редактор:
Есть 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.
0
Спасибо. как это не странно в ИЕ8 под windows7 мой скрипт сработал правильно… значит возвращается по крайней мере там «1» ))))
За решение огромное спасибо очень интересно!
За решение огромное спасибо очень интересно!
0
<a href="1">ссылка</a>
не фирштейн. при чем здесь якоря (#) если в статье речь идет об relative ссылке на «страницу» «1»?
зачем сплит? откуда возьмется элемент [1]?
0
ужас, если используется href='#abc', то работает
$(this).attr('hash')
$(this).attr('hash')
+1
Для надежности надо писать так
a.getAttribute(«href»,2)
тогда там всегда будет то, что положили
a.getAttribute(«href»,2)
тогда там всегда будет то, что положили
+8
угу. из-за этого перевел подобное с href на rel
-2
Получается баг jquery, ее и делали, чтобы везде работало одинаково, ан нет, за всем не уследишь :)
0
UFO just landed and posted this here
-1
Вы уверены? у меня другие результаты (правда, для иллюстрации я использовал гипотетический пример. реальный код намного сложнее)
0
jQuery под рукой нету, но код
выдаёт мне полный путь.
<a href="1" onclick="alert(this.href);return false;">ссылка</a>
* This source code was highlighted with Source Code Highlighter.
выдаёт мне полный путь.
-2
Вы много не чисто повторили условия эксперимента…
Нажатие на Ваш вариант возвращает полный путь на тот который был указан в моей статье возвращает в ФФ цифру «1»
<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»
0
Поздравляю. А теперь узнайте, что атрибут тега и свойство объекта — 2 большие разницы.
+1
Каким образом это замечание объясняет то, что один браузер возвращает одно а другой другое?
0
Покопался в jquery.
В случае автора, его проблема в том что в его случае jquery получает значение атрибута через
elem[«href»]
вместо
elem.getAttribute(«href»);
Мобишь вместо этого кода:
Отрабатывается:
Пример =)
В случае автора, его проблема в том что в его случае 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>
0
«Мобишь вместо этого кода: Отрабатывается:»
не могу понят, почему вы так решили? Просмотрел по исходникам (к сожалению, без дебагера), обрабатывается именно elem.getAttribute( name, 2 ).
Автор, может быть закатаете свой пример куда-нибудь на сервер, а то смотреть не из дома очень не удобно?
не могу понят, почему вы так решили? Просмотрел по исходникам (к сожалению, без дебагера), обрабатывается именно elem.getAttribute( name, 2 ).
Автор, может быть закатаете свой пример куда-нибудь на сервер, а то смотреть не из дома очень не удобно?
0
пожалуйста. test.kamaikin.ru/123.html
0
Спасибо, как оказалось на этом компьютере эксплорер тупит те только на локальных файлах, так что простите, сегодня ничего не смогу посмотреть.
0
Ну, собственно вторая ссылка во всех браузерах выводит «1». Получается, топик вообще не верен, или как?
+1
ну проблема есть))) — habrahabr.ru/blogs/jquery/72764/?reply_to=2092003#comment_2088549
мое мнение — habrahabr.ru/blogs/jquery/72764/?reply_to=2092003#comment_2090171
мое мнение — habrahabr.ru/blogs/jquery/72764/?reply_to=2092003#comment_2090171
0
Первая ссылка всегда полный путь.
Вторая всегда короткий.
Это IE8 в IE7 Mode.
Вторая всегда короткий.
Это IE8 в IE7 Mode.
0
Немного опечатался =)
p.s. Дорвался до IE8
в quirks mode:
this.getAttribute('href'): 1
this['href']: domain/path/1
this.href: domain/path/1
в ie8 standads:
this.getAttribute('href'): domain/path/1
this['href']: domain/path/1
this.href: domain/path/1
в дебагере кстати в обоих модах аттрибут href = 1
p.s. Дорвался до IE8
в quirks mode:
this.getAttribute('href'): 1
this['href']: domain/path/1
this.href: domain/path/1
в ie8 standads:
this.getAttribute('href'): domain/path/1
this['href']: domain/path/1
this.href: domain/path/1
в дебагере кстати в обоих модах аттрибут href = 1
0
Это всё от нецелевого использования элемента A (особенно в случае с комментарием second_pilot). Если href ссылается на некий другой документ, то абсолютный адрес выдаст javascript или относительный, в 99% случаев должно быть абсолютно без разницы.
0
хм… я уже писал, что пример в тексте сильно упрощен для обозначения проблемы.
а реальность…
На странице сайта есть два вида ссылок. внутренние — /data.php
и внешние которые как им и положено начинаются с протокола. При клике мышкой по ссылке я анализирую какая именно ссылка используется, и если внутренняя то пользователю гружу ее аяксом, если внешняя то ничего не делаю))) даю пользователю открыть другой сайт.
В таком случае уже достаточно критично что именно возвращается…
а реальность…
На странице сайта есть два вида ссылок. внутренние — /data.php
и внешние которые как им и положено начинаются с протокола. При клике мышкой по ссылке я анализирую какая именно ссылка используется, и если внутренняя то пользователю гружу ее аяксом, если внешняя то ничего не делаю))) даю пользователю открыть другой сайт.
В таком случае уже достаточно критично что именно возвращается…
-1
Всё равно это не выход. Если Вы укажете внутреннюю ссылку на том же домене, что и ваш сайт, но укажете абсолютно, Ваш скрипт ошибется и сработает неправильно. Вешайте, к примеру, класс «internal» или «ajax» и по нему определяйте.
0
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("Внутренние");
});
});
0
в IE есть фичи? о_О
-1
Проблем с этим не вижу.
В случаях, когда нужен атрибут «href» его можно использовать и так и так, т.е. как полный путь, так и неполный.
В случаях, когда нужен атрибут «href» его можно использовать и так и так, т.е. как полный путь, так и неполный.
0
Я все внешние ссылки отбрасываю вот так:
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;
}
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;
}
0
Sign up to leave a comment.
интересный баг в ИЕ7 (или фича)