2009-08-18 6 views
2

Есть ли способ легко обрабатывать манипуляции с URL-адресами в JavaScript?Есть ли простой способ JavaScript для управления произвольными URL-адресами?

Немного контекста:

Я хочу использовать ThickBox, популярный JQuery модальное всплывающее окно, но ненавязчиво. Согласно документации ThickBox я должен дать все ссылки, которые я хочу быть модальным в CSS класс «Thickbox» и изменить URL-адрес из ...

http://www.mysite.com/mypopup

... чтобы:

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

Я хочу, чтобы это произошло, только если включен JavaScript.

Итак, я получаю все ссылки, используя jQuery и «взломаю» обнаружение для?? символ в URL-адресе, добавив соответственно "& height ..." или "? height ...".

В более грандиозной схеме вещей это может запутать вещи, если у 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"); 

ответ

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

Nice .. но это не позволяет мне задать параметры строки запроса URL.Ключевым моментом было манипулирование URL-адресами (или HREFs могли бы быть лучшим способом поставить его). Я мог бы обновить этот метод, чтобы получить URL-адрес в качестве параметра очень легко (в отличие от работы с window.location.href), но он не позволит мне изменять или добавлять параметры строки запроса. – joshcomley

+0

Мой предыдущий комментарий теперь о совершенно другом ответе! – joshcomley

+0

@joshcomley - Я положил все обратно, чтобы ваш комментарий снова имел смысл. – karim79

0

Да. Объект location в javascript имеет quite a lot of properties.

Задать вопрос: location.search = "width=300"; применимо к «url = 300».

+0

Это на один шаг ближе, но что, если есть 10 параметров, и я хочу обновить только один? Я мог бы повторять его, но опять-таки кажется «взломанным» и как-то, что кто-то должен был сделать раньше, но лучше, чем я;) – joshcomley

0

Вы, вероятно, может сделать это с помощью JQuery, т.е.

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

Я не проверял это, и это может быть не так, я не в состоянии проверить его в тот момент, но, надеюсь, это будет указывайте в правильном направлении, если ничего другого. Если у вас есть jQuery для Thickbox, вы можете использовать его для манипуляции;)

Смежные вопросы