2009-08-18 5 views
2

JavaScriptで簡単にURLを操作する方法はありますか?任意のURLを操作する簡単なJavaScriptの方法はありますか?

コンテキストのビット:

私は控えめThickBoxの、人気のjQueryのモーダルポップアップボックスが、を使用したいです。 ThickBoxのドキュメントによると、私は私が行うことにしたいすべてのリンクを与える必要があり、「ThickBoxの」のCSSクラスをモーダルとする... ...

http://www.mysite.com/mypopup

からURLを変更します。

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

JavaScriptを有効にしている場合にのみこれを実行したいと考えています。

私はすべてのリンクをjQueryを使って取得し、「ハック」は「?」を検出します。 URLに "& height ..."または "?height ..."を追加してください。

これは、URLに既に「高さ」パラメータが設定されている場合、これは混乱する可能性があります。その場合は、既存のパラメータを2つに変更したい場合があります。

少し匂いがします。

コードをハッキングしているような気がします。これは、一度正しく実行されている必要があります。

だから私の質問は次のとおりです。

はこのような何かに私を可能にするJavaScriptの世界(プラグインやない)で何かがあります:

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); 

EDIT:(それは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

はい。 javascriptのlocationオブジェクトにはquite a lot of propertiesがあります。

location.search = "width=300";あなたのURLに「?width = 300」が適用されます。

+0

これは一歩近づいていますが、10個のパラメータがあり、1個だけを更新したいのですが?私はそれを正規表現することができたが、再び "ハッキー"と思われ、誰かが前にやったに違いないが、私よりも優れているように思える;) – joshcomley

0

あなたはおそらく、jQueryの、すなわち

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

を使用して、私はこれをテストしていませんでしたし、それが間違っている可能性があり、私は、現時点ではそれをテストする立場にないんだけど、うまくいけば、それはよそれを行うことができますあなたが正しい方向を向いていれば、あなたに指してください。 Thickbox用のjQueryを使用している場合は、操作のために活用することもできます;

関連する問題