有没有简单的JavaScript方法来操纵任意的URL?
有没有一种方法可以轻松处理JavaScript中的操作URL?有没有简单的JavaScript方法来操纵任意的URL?
上下文的位:
我想使用的ThickBox,流行的jQuery模式弹出框,但不显眼。根据该文件的ThickBox我得给,我要进行模态CSS类的“ThickBox的”,改变从URL中的所有链接...
...到:
http://www.mysite.com/mypopup?height=200&width=300
我想只有在启用JavaScript的情况下才会发生这种情况。
所以我得到所有的链接使用jQuery和“黑客”检测'?'字符在URL中,相应地附加“&高度...”或“?高度...”。
在事物的宏伟计划,这可能蒙混过关的东西了,如果URL已经有一个“高度”的参数,在这种情况下,我可能只是想更新现有的一个,而不是给它两项。
这一切都闻起来有点。
我觉得我正在破解可能/必须已经正确完成的代码!
所以我的问题是:
有没有在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");
这个函数这样做,只是把它要解析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
是。在javascript中的location
对象有quite a lot of properties。
对于你的问题: “WIDTH = 300” location.search = "width=300";
将适用于您的网址。
这是更近一步,但如果有10个参数,我想只更新一个参数呢?我可以对它进行正则表达,但它又是一个“黑客”,就像之前必须做的事情,但比我好;) – joshcomley 2009-08-18 13:43:31
你或许可以做到这一点使用jQuery,即
$(".thickbox").each(function() {
this.href += "?height=200&width=300";
});
我没有测试这一点,它可能是错的,我不是在一个位置的时刻进行测试,但希望它会如果没有其他的话,请指出你的方向是正确的如果你的jQuery的ThickBox的,那么你不妨利用它的操纵;)
不错..但是,这并不让我设置的URL查询字符串参数。关键在于操纵URL(或者HREF可能是更好的方式)。我可以更新此方法,以非常容易地将URL作为参数(而不是使用window.location.href),但它不会允许我更改或添加查询字符串参数。 – joshcomley 2009-08-18 13:39:51
我之前的评论是关于一个完全不同的答案! – joshcomley 2009-08-18 14:36:56
@joshcomley - 我把这一切都回来了,所以你的评论意义再次。 – karim79 2009-08-18 14:53:57