2011-01-12 3 views
1

나는 레일Firefox에서 javascript regex를 사용하여 href를 바꾸는 방법은 무엇입니까?

$(function() { 
    $('#lesson a').live('click', function() { 
    $.getScript(this.href.replace(/^(http...[^\/]+)?\/+(.*)$/,'/ajax/\\$2')); 
    return false; 
    }); 
}) 

이 트릭은 파이어 폭스와 오페라에 대한 (아무것도 클릭에서 발생 없음) 크롬과 사파리 작동하지만, 실패에 대한 jQuery 다음 코드를 사용하여 웹 페이지의 일부 링크를 변경하려고합니다. 코드에 어떤 오류가있을 수 있습니까?

EDIT1 :

웹 페이지가 포함되어 있습니다 클릭에

<div id="lesson"> 
    <a href="/subj1">Subject 1</a> 
    ... 
</div> 

는, 브라우저 (즉, 파이어 폭스와 오페라) /ajax/subj1의 아약스 요청을해야합니다.

+0

예제 HTML 페이지의 소스도 포함시킬 수 있습니까? – orangepips

+0

@orangepips 그냥 해냈습니다. 업데이트 된 질문을 참조하십시오. – Andrei

+2

어떤 방법으로 실패합니까? 어떤 오류가 발생합니까? – lonesomeday

답변

2

문자열을 '/ajax/\\$2'으로 바꿉니다.
여분의 백 슬래시가 있습니다. 결과가 /ajax/subj1이라면 '/ajax/$2'을 사용하십시오.

+0

감사합니다! 내가 자바 스크립트에서 정규 표현식 부분을 어떻게 언급하는지 잘못 읽었습니다. 일부 브라우저에서 작동하는 것이 흥미 롭습니다. – Andrei

+1

@Andrei - 문제 없습니다! 때로는 무언가를 쓰고 그다음에 눈을 멀게합니다 - 비록 그것이 당신의 얼굴에 있더라도 :). 일부 브라우저는 사용자가 잘못 입력했다는 가정하에 URL과 HTML을 수정합니다. 예를 들어 http : /google.com은 유효한 URL이 아니더라도 대부분의 브라우저에서 작동합니다. IE는 자동적으로'\'를'/'(또는 적어도 7 년 전에 - 이후 체크하지 않았 음)으로 수정하고, 아마도'/'를'/'로 쪼개서 올바른 결과를줍니다. – Kobi

관련 문제