2010-05-31 55 views
1

jQuery를 사용하여 사용자가 입력 한 모든 URL을 찾으려고합니다. http 또는 https로 시작하지 않고 마지막으로 이러한 URL에 http를 추가하여 사용자가 클릭 할 때 http 또는 https가없는 URL 입력으로 인해 링크가 끊어진 대신 적절한 사이트로 이동합니다.http로 시작하지 않는 href를 선택하는 것

사용자가 자신이 관심있는 웹 사이트에 들어가는 "웹 사이트 좋아요"필드가 있음을 언급하는 것도 좋아합니다. 그래서 그들이 stackoverflow를 좋아한다면, 그들은 http없이 상대 링크로 간주 될 www.stackoverflow.com을 작성하게 될 것입니다. // :

또한 내 한 요구 사항에 내가 이미 렌더링 앵커 태그에 "패치"URL이 HTTP를 포함 찾고 있다면

+0

데이터 구조의 일종에 이러한 URL이 있습니까? 양식 필드? 앵커 태그를 클릭 할 때 URL을 "패치"하시겠습니까? –

+0

사용자 프로필 페이지의 URL입니다. 내가 성취하려고하는 것은 url href doesnt가 ​​http (s)를 클릭했을 때 URL 대신에 깨진 링크를 제공해서는 안된다는 것입니다. 이 링크 Google처럼 여기에서 사용자가 깨진 페이지로 이동했을 때 –

답변

4

이 URL을하기 전에 HTTP 또는 HTTPS를 입력하라는 메시지가 사용자에게 질수 있도록 있습니다 당신은 아마 이런 식으로 그들을 통해 실행할 수 있습니다 :

$(document).ready(function(){ 
    $('a:not([href^="http://"]):not([href^="https://"])').each(function(){ 
     $(this).attr('href', 'http://' + $(this).attr('href')); 
    }) 
}) 

편집 : 각()를 사용하도록 개정. 편집 : http 및 https를 처리하도록 수정되었습니다.

+0

이것은 내가 정확히 쓴 것입니다. 그것은 나를 위해 일하지 않았다, 당신은 –

+0

그냥 https와 http를 잊어 버렸어요. 그것의 http 링크가 당신이 작성한 코드 줄이 여전히 작동하지 않는다고 상상해보십시오. –

+0

위의 코드는 수정 후 간단한 테스트 페이지에서 작동합니다. 내 테스트에는 프로토콜이없는 링크가 포함되어 있습니다. 하나는 http : //가 있고 다른 하나는 https : //가있는 링크입니다. 작동하지 않는 경우 더 많은 페이지를 게시 할 수 있습니까? –

0

내가 무엇을하고 있었는지 알고있어 잘못된 나는 또한


$(document).ready(function(){ 
    $('a:not([href^="http://"])').attr('href', 'http://' + $(this).attr('href')); 
}) 

그래서 선택기 잘하지만 '에 http : //'일하는 사용 + $ (이) .attr ('HREF')는 아니었다 일. 내가 $ ('a : not ([href^= "http : //"]))'로 $ (this)를 대체했을 때 효과가있었습니다. $ (이) 실 거예요 작동하지만 왜 지금은 혼란 스러워요

+1

예, 이것이 각()을 사용하여 전환 한 이유입니다. $ (이)의 컨텍스트는 선택자가 아닌 "문서"입니다. 위의 방법은 선택한 앵커 태그에 초점을 맞추는 대신 선택한 객체를 새로 만들 때 문제가 발생할 수 있습니다. –

+0

이 문서의 맥락에 대해 자세히 설명해 주실 수 있습니까? 나는 그것을 따라 갔다. 나는 어떻게 문맥을 알고있을 것입니다. –

+0

나는 또한 따라 갔다; "선택한 앵커 태그에 집중하는 대신 선택한 객체를 새로 만들려고합니다." 설명하십시오 –

0

깨끗하고 적절한

$(document).ready(function(){ 
    $('a:not([href^="http://"], [href^="https://"])').each(function(){ 
      $(this).attr('href', 'http://' + $(this).attr('href')); 
    }); 
}); 
관련 문제