Поиск по этому блогу

вторник, 10 июля 2012 г.

Как выделить часть url используя javascript

Бывает ситуация когда нужно выделить часть интернет-адреса, которая является параметром передаваемым странице, например, имя ролика на You Tube. Допустим есть адрес:
http://www.youtube.com/watch?v=Ahg6qcgoay4
Из него нужно получить часть стоящую за "?v=" чтобы получилось следующее:
Ahg6qcgoay4
Этого можно добиться с помощью регулярного выражения:
regex = /http\:\/\/www\.youtube\.com\/watch\?v=(\w{11})/;
url = 'http://www.youtube.com/watch?v=Ahg6qcgoay4';
id = url.match(regex)[1]; // id = 'Ahg6qcgoay4'
Недостатком данного регулярного выражения является обязательная определенность выделяемого элемента. Второй способ - использование функции разбития строки split:

split(delim[,limit]) - функция принимает два параметра, первый из которых
delim (обязательный) - это разделитель внутри строки,
limit (второй необязательный параметр) - максимальное количество элементов в результате. Возвращает данная функция массив разделенных элементов строки.
Возвращаясь к примеру выше преобразуем его в следующий вид:
var url = "http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk"
var param = url.split("?")[1].split("&")[0]; //param = "p=DB852818BF378DAC"

Отображение передварительно загруженной картинки через javascript

Допустим нужно в существующем элементе html страницы отобразить картинку, которая загружается через объект javascript Image(). Изображение должно быть отображено только в случае удачной его загрузки. Для этого можно воспользоваться событием onLoad() объекта Image(). На странице у нас есть элемент картинки:
Изменим отображаемое изображение используя javascript:
function loadImage() {
            img = new Image();
      img.src='http://25.media.tumblr.com/tumblr_m5n33fvJ1A1qgz81bo1_500.png';
            img.onload=(function() {
                document.getElementById('img_chg').src = img.src;
            });
Пример здесь
Преимущество такого подхода состоит в том, что если изображения нет, то изначальный рисунок останется на своем месте и страница не выдаст ошибку.