2009-08-18 5 views
2

JavaScript에서 URL 조작을 쉽게 처리 할 수있는 방법이 있습니까?임의의 URL을 조작하는 간단한 JavaScript 방법이 있습니까?

컨텍스트의 비트 :

내가 겸손 Thickbox와 인기 jQuery를 모달 팝업 상자,하지만를 사용하고 싶습니다.

다음 Thickbox와 문서에 따르면 난에 ...

http://www.mysite.com/mypopup

... 내가 "Thickbox와"의 CSS 클래스 모달 만들어에서 URL을 변경해야 할 모든 링크를 제공해야

http://www.mysite.com/mypopup?height=200&width=300

JavaScript가 활성화 된 경우에만이 기능을 사용하고 싶습니다.

그래서 모든 링크가 jQuery를 사용하고 "해킹"에서 '?' URL에 "& height ..."또는 "? height ..."를 추가하십시오.

URL이 이미 "높이"매개 변수가있는 경우, 더 큰 계획으로 볼 때 위의 두 가지를 제공하는 대신 기존의 것을 업데이트하고 싶을 수도 있습니다.

모두 약간의 냄새가납니다.

내가 이미 한 번 제대로 수행 할 수있는 코드를 해킹하고있는 것처럼 느껴집니다!

그래서 제 질문은 :

var url = Url(elm.attr("href")); 
url.parameter("width", "300"); 
url.parameter("height", "200"); 
elm.attr("href", url.toString()) 

또는 :

var height = Url(elm.attr("href")).parameter("height"); 

는 다음과 같이 날 수 있도록 할 것 자바 스크립트의 세계에서 뭔가 (플러그인 없음) 거기에

답변

1

이 함수는 구문 분석 할 URL 페이지에서 호출합니다.

function gup(name) 
{ 
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regexS = "[\\?&]"+name+"=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(window.location.href); 
    if(results == null) 
    return ""; 
    else 
    return results[1]; 
} 

//for the URL http://www.mysite.com/mypopup?height=200&width=300 

var height = gup('height'); 
var width = gup('width'); 
alert('Height: ' + height + ' Width: ' + width); 

편집 : (그것이하여 Prototype.js를 사용하기 때문에) 나는이 사용하는 것입니다 얼마나 유용 모르지만이 읽기와 쿼리 문자열을 수정할 수 있습니다 :

http://code.nontalk.com/2006/10/readmodify-querystring-variables-with.html

+0

좋지만 URL 쿼리 문자열 매개 변수를 설정할 수 없습니다.핵심은 URL 조작에 관한 것이 었습니다 (또는 HREF가 더 좋은 방법 일 수 있습니다). 이 메서드를 업데이트하여 매개 변수로 URL을 매우 쉽게 가져올 수 있지만 (window.location.href와는 달리) 쿼리 문자열 매개 변수를 변경하거나 추가 할 수 없습니다. – joshcomley

+0

내 이전 의견은 완전히 다른 답변입니다! – joshcomley

+0

@ joshcomley - 귀하의 의견에 다시 한번 의미가 있기 때문에 모든 것을 되돌려 놓았습니다. – karim79

0

예. 자바 스크립트에 location 객체는 quite a lot of properties입니다.

귀하의 질문에 : location.search = "width=300"; 귀하의 URL에 "너비 = 300"을 적용합니다.

+0

이것은 하나의 단계 더 가깝지만, 10 개의 매개 변수가 있고 하나만 업데이트하려는 경우 어떻게해야합니까? 나는 그것을 regex 할 수 있었지만, 다시 "hacky"처럼 보이고, 누군가는 이전에 해왔 던 것이 틀림 없지만 나보다 뛰어나다.) – joshcomley

0

당신은 아마 지금 테스트 할 수있는 위치에 내가 이것을 테스트하지했고 잘못 될 수있다, 즉,

$(".thickbox").each(function() { 
    this.href += "?height=200&width=300"; 
}); 

을 jQuery를 사용하는 것이 아니에요 할 수 있지만 희망은거야 올바른 방향으로 당신을 가리킨다. Thickbox 용 jQuery를 사용하는 경우 조작을 위해 활용할 수 있습니다.)

관련 문제