jQuery를 사용하여 a 요소의 href를 설정하려고합니다. Firefox 6에서 IDN을 설정하면 href가 인코딩됩니다. 하나의 예가 IDN http://räksmörgås.se이며 http://r%C3%A4ksm%C3%B6rg%C3%A5s.se으로 변경되었습니다. 다른 브라우저 (IE8, Chrome 13, Safari 5.1)에서 동일한 작업을 수행하면 IDN이 인코딩되지 않습니다.Firefox에서 국제 도메인 이름 + JQuery attr ('href') 문제가 발생했습니다.
내가 이것을하려고하는 이유는 사용자가 hrefs를 변경하고 웹 서버에 아약스에 의해 페이지 콘텐츠의 하위 집합을 업로드하도록 허용하고 있기 때문입니다. 링크가 HTML 문자열에 깊이 묻혀 있기 때문에 문제가 발생합니다. html 문자열의 모든 요소를 파기하지 않는 것이 좋습니다.
Firefox에서 href를 설정할 때 인코딩을 비활성화하는 방법이 있습니까? 아니면 문제를 해결할 다른 방법이 있습니까?
(href가 유효한 punycode IDN, 즉 http://www.xn--rksmrgs-5wao1o.se 인 경우 브라우저가 멋지게 멋지다는 것을 알았지 만, js에서 punycode 인코딩을 수행해야합니다. 하나 또는 여러 개의 버그가있을 수 있으며 인코더/디코더의 공식 릴리스가없는 것 같습니다.)
다음 html 페이지에 내 문제가 표시됩니다. 국제 도메인 이름 (copy-paste "http : //www.räksmörgås.se"붙여 넣기)을 입력하면 #linkHtml은 Firefox를 사용하는 경우 href가 포함 된 전체 요소를 가져오고 다른 브라우저를 사용하는 경우 올바른 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>
필자는 Mozilla에서 허용 목록에 포함되지 않은 TLD를 보았습니다 (.se는 괜찮습니다. http://www.mozilla.org/projects/security/tld-idn-policy-list.html). 거기에 버그와 비슷한 것이있다? 또한 참조 : http://idn.icann.org/Firefox_Information 및 http://www.slideshare.net/playingwithsid/universal-acceptability – m90
흠, 괜찮아 보이는 (파이어 폭스 6 @ 우분투) - 업데이트 된 href isnt ' t endoded. – WTK
@WTK, span 또는 Firebug에서 출력을 확인하고 있습니까? Firebug가 URL을 디코딩하는 것처럼 보이므로, 단지 방화범을 끄는 것이 불가능합니다. –