Я пытаюсь установить href элемента, используя jQuery.Когда я устанавливаю IDN в Firefox 6, href кодируется в URL.Одним из примеров является IDN http://räksmörgås.se,, который искажен до http://r%C3%A4ksm%C3%B6rg%C3%A5s.se. Когда я делаю то же самое в других браузерах (IE8, Chrome 13, Safari 5.1), IDN не кодируется.
Причина, по которой я пытаюсь это сделать, заключается в том, что я разрешаю пользователю изменять hrefs и затем загружать подмножество содержимого страницы с помощью ajax на веб-сервер.У меня тогда возникают проблемы, так как ссылка находится глубоко в HTML-строке;и я бы предпочел не выкапывать все элементы в строке html.
Есть ли способ отключить кодирование hrefs при установке его в Firefox?Или у вас есть какие-то другие способы, которыми я мог бы решить эту проблему?
(я заметил, что если href - это правильный IDN punycode, т.е.* браузеры хороши и хороши, но мне нужно сделать кодировку punycode в js, что я предпочитаю не делать, может быть одна или несколько ошибок, и официального выпуска кодировщика не существует/decoder.)
Следующая html-страница отображает мою проблему.Если вы введете международное доменное имя (copy-paste "http://www.räksmörgås.se"), #linkHtml, то получите весь элемент, включая искаженный href при использовании Firefox и правильный href при использовании любого другого браузера.
<!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>
<script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script>
$(document).ready(function(){
$("#linkText").focus();
$("#linkText").keyup(function() {
var href = $(this).val();
$("#link").attr('href', href);
$("#linkHtml").text($("#link").parent().html());
});
});
</script>
</head>
<body>
<div><input id="linkText" type=text /></div>
<div><a id="link" href="#">link</a></div>
<span id="linkHtml"></span>
</body>
</html>