是否有一种简单的JavaScript方法来操纵任意URL?

时间:2009-08-18 13:27:51

标签: javascript jquery url

有没有办法轻松处理JavaScript中的操作URL?

一些背景信息:

我想使用ThickBox,流行的jQuery模式弹出框,但不引人注目。根据ThickBox文档,我必须将我想要的所有链接设为modal一个CSS类“thickbox”并更改URL ...

http://www.mysite.com/mypopup

...为:

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

我希望只有在启用JavaScript时才会发生这种情况。

所以我使用jQuery获取所有链接并“黑客”检测到'?' URL中的字符,相应地附加“& height ...”或“?height ...”。

在更宏大的方案中,如果URL已经具有“height”参数,这可能会混淆,在这种情况下,我可能只想更新现有的参数而不是给它两个。

这一切都闻起来有点。

我觉得我已经破解了能够/必须已经正确完成的代码!

所以我的问题是:

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

是。 javascript中的location对象有quite a lot of properties

对于您的问题:location.search = "width=300";会将“?width = 300”应用于您的网址。

答案 2 :(得分:0)

你可以使用jQuery,即

来做到这一点
$(".thickbox").each(function() {
  this.href += "?height=200&width=300";
});

我没有对此进行测试,这可能是错误的,我现在无法测试它,但希望它能指向正确的方向,如果没有其他的话。如果你有厚盒的jQuery,那么你也可以利用它进行操作;)