Javascript.RU

window.location

Получает/устанавливает URL окна и его компоненты

Описание, примеры

Значением этого свойства является объект типа Location.

Объект Location

Метод toString этого объекта возвращает URL, а различные свойства позволяют получить/установить отдельные компоненты адреса.

Для некоторых строковых операций необходимо явно преобразовать Location к строке:

window.location.toString().charAt(17)

Свойства объекта Location

Все следующие свойства являются строками.
Колонка "Пример" содержит их значения для URL:

  • http://www.google.com:80/search?q=javascript#test
Свойство Описание Пример
hash часть URL, которая идет после символа решетки '#', включая символ '#' #test
host хост и порт www.google.com:80
href весь URL http://www.google.com:80/search?q=javascript#test
hostname хост (без порта) www.google.com
pathname

строка пути (относительно хоста) /search
port номер порта 80
protocol протокол http:
search часть адреса после символа ?, включая символ ? ?q=javascript

В Firefox есть баг: если hash-компонент адреса содержит закодированные (см. encodeURIComponent) символы, свойство hash возвращает раскодированный компонент. Например, вместо %20 будет пробел и т.п. Другие браузеры ведут себя корректно и не раскодируют hash.

Методы объекта Location

assign(url)
загрузить документ по данному url
reload([forceget])
перезагрузить документ по текущему URL. Аргумент forceget - булево значение, если оно true, то документ перезагружается всегда с сервера, если false или не указано, то браузер может взять страницу из своего кэша.
replace(url)
заменить текущий документ на документ по указанному url. Разница, по сравнению с assign() заключается в том, что после использования replace() страница не записывается в истории посещений. В частности, это значит, что посетитель не сможет использовать для возврата кнопку браузера "Назад".
toString()
возвращает строковое представление URL для объекта Location

При изменении любых свойств window.location, кроме hash, документ будет перезагружен, как если бы для модифицированного url был вызван метод window.location.assign().

Пример: перейти на документ по адресу
function goJs() { 
   window.location = "http://javascript.ru"
}
Пример: вывести свойства текущего location
function showLoc() {
   var x = window.location;
   var t = ['Property - Typeof - Value',
            'window.location - ' + (typeof x) + ' - ' + x ];
   for (var prop in x){
     t.push(prop + ' - ' + (typeof x[prop]) + ' - ' +  (x[prop] || 'n/a'));
   }
   alert(t.join('\n'));
}

Пример: сделать запрос с новыми параметрами
function sendData(dat)
{
  window.location.search = dat;
}

При вызове sendData('My Data') на сервер отправится строка
с параметрами "?My%20Data".


Автор: Гость (не зарегистрирован), дата: 27 октября, 2009 - 15:12
#permalink

Как можно получить параметр из URl? Только в ручную разбирая search


Автор: Vladimir_O, дата: 11 декабря, 2009 - 17:29
#permalink

кстати объект document тоже содержит в себе ссылку на объект location.


Автор: helichrysum (не зарегистрирован), дата: 17 декабря, 2009 - 11:12
#permalink

Кто знает как запретить чужому сайту из фрейма трогать location.
Если кто не понял, в чем дело, попробуйте Яндекс во фрейм положить...


Автор: Гость (не зарегистрирован), дата: 9 декабря, 2010 - 12:39
#permalink

vkontakte также закрыт..


Автор: denisx (не зарегистрирован), дата: 4 марта, 2011 - 18:48
#permalink

вот чтобы не воровали контент чужих страниц клиентом - так и сделано


Автор: Гость (не зарегистрирован), дата: 22 мая, 2012 - 12:56
#permalink

Вконтакте hash находиться в объекте flashVars.


Автор: Бобр, дата: 22 января, 2010 - 20:41
#permalink

Существует ли простой способ разбора параметров location.search ?
То есть функция, я ей - параметр, она мне - его значение.

Если стандартной такой функции не существует, то наверняка уже кто-то писал такую функцию. Чего мне велосипед то изобретать? Поделитесь, пожалуйста.


Автор: SoRx, дата: 18 июня, 2010 - 16:47
#permalink
function parseGET() {
  // Обработка GET-запросов
  var tmp = new Array();    // два вспомогательных
  var tmp2 = new Array();  // массива
  get = new Array();

  var url = location.search;	// строка GET запроса
  if(url != '') {
    tmp = (url.substr(1)).split('&');	// разделяем переменные
    for(var i=0; i < tmp.length; i++) {
      tmp2 = tmp[i].split('=');		// массив param будет содержать
      get[tmp2[0]] = tmp2[1];		// пары ключ(имя переменной)->значение
    }
  }
}

Запускаем функцию (например: "window.onLoad = parseGET;") - получаем массив get[_параметр_]=_значение_.


Автор: Гость (не зарегистрирован), дата: 26 августа, 2010 - 02:18
#permalink

Только вот ты забыл, что в JS нету ассоциативных массивов и вот эта строка
get[tmp2[0]] = tmp2[1];
не имеет смысла до тех пор, пока она
get = new Array();

Рабочая версия (возвращает объект)

function parseUrlQuery() {
    var data = {};
    if(location.search) {
        var pair = (location.search.substr(1)).split('&');
        for(var i = 0; i < pair.length; i ++) {
            var param = pair[i].split('=');
            data[param[0]] = param[1];
        }
    }
    return data;
}

Автор: trikadin, дата: 28 апреля, 2011 - 00:57
#permalink

По секрету... Ассоциативные массивы в JS есть. И, что доставляет, это - одная из важнейших его частей.


Автор: zaycker, дата: 14 мая, 2012 - 14:49
#permalink

Кхм, и называется оно "Объект"? ) В js нет ассоциативного массива, по крайней мере в таком виде, чтобы инстанс некоего типа имел возможность присваивания своим именованным свойствам неких значений и при этом сохранял возможности "массива", которые являются привычными и устоявшимися (конкатенация массивов, сортировка по ключу/значению и прочее). Объект - хеш - назвать ассоциативным массивом ввиду отсутствия нативных "массивных" возможностей можно с натяжкой. Принимая во внимание тот факт, что в спеке ECMA-262 ни разу не встречается словосочетание "associative array" или слово "hash". Это народные обзывательства, реально же в js ассоциативных массивов нет в должном привычном объёме.


Автор: nofx, дата: 9 ноября, 2010 - 22:32
#permalink

а как cделать так,чтобы location.href=cсылка , загружало ссылку в определенный фрейм (то есть target)?


Автор: B@rmaley.e><e, дата: 9 ноября, 2010 - 23:10
#permalink
frameWindow.location.href = '...';

Где frameWindow - window фрейма (Можно получить как document.getElementById('frame_ID').contentWindow)


Автор: guitarslave, дата: 21 декабря, 2010 - 23:34
#permalink

В статье описан баг в firefox'e, никто не знает как его пофиксить? Очень надо! Заранее спасибо!


Автор: Барин, дата: 26 декабря, 2010 - 15:46
#permalink

alert(window.location.hash) -
в ИЕ нормально возвращает, то что идёт после решётки, остальные браузеры возвращают пустоту. Подскажите, пожалуйста, что можно с этим сделать.


Автор: zhd (не зарегистрирован), дата: 4 марта, 2014 - 22:24
#permalink

alert(window.location.hash.toString());

Эта конструкция прекрасно все возвращает и в Mozilla Firefox


Автор: Гость (не зарегистрирован), дата: 28 декабря, 2010 - 14:05
#permalink

Подскажите пожалуйста, можно ли сделать что бы было выпадающее меню с ссылками а при нажатии на ссылку они выгружались в Iframe?


Автор: Sa1ntass (не зарегистрирован), дата: 5 января, 2011 - 18:40
#permalink

Хммм... А как сделать что бы пользователь переходил не на ту странице ссыль которой нажал а на другую используя javascript который будет записываться в адрессную строку.


Автор: Гость (не зарегистрирован), дата: 17 марта, 2011 - 17:55
#permalink

есть

как в a.js понять какой query ему отдали, ибо location.search - содержит есессно query основной страницы, и не подходит?


Автор: Гость (не зарегистрирован), дата: 17 марта, 2011 - 17:55
#permalink

есть < script src='a.js?some'> < /script>

как в a.js понять какой query ему отдали, ибо location.search - содержит есессно query основной страницы, и не подходит?


Автор: NewLifeMan (не зарегистрирован), дата: 22 марта, 2011 - 08:26
#permalink
function parseUrl(_url)
   {
    var params = new Object();
    
    var t1 = _url.split('?');
    if (t1.length > 1)
       {
        var t2 = t1[1].split('#');
        if (t2.length > 0)
           {
            var t3 = t2[0].split('&');
            	 
            if (t3.length > 0)
               {
                var t4;
 
                for (var i=0; i<t3.length; i++)
                    {
                     t4 = t3[i].split('=');
                        
                     if (t4.length > 0)
                       {
                        params[t4[0]] = (t4[1] || 'n/a');
                       }
                   }
               }
           }
       }
    
    return params;
   }


function print_r(data)
   {
    var t = new Array();
        
    for (var prop in data)
        {
         t.push('data['+ prop +'] - '+  (data[prop] || 'n/a'));
        }
    
     return t.join('\n');
    }



var _script  = document.getElementById('id_скрипта');
if (_script)
   {
    var data = parseUrl(_script.src);
    //alert(data['чего-то там..']);
    alert(print_r(data));
   }

Добавь скрипту ID, потом через document.getElementById получи объект..

Преобразуй строку в объект и работай дальше..
Для примера создана вторая функция - print_r, чтобы проверит результат..


Автор: Гость (не зарегистрирован), дата: 30 марта, 2011 - 19:12
#permalink

Спасибо


Автор: Гость (не зарегистрирован), дата: 13 августа, 2011 - 01:00
#permalink

имется виду внешний скрипт


Автор: B@rmaley.e><e, дата: 13 августа, 2011 - 09:56
#permalink

Содержимое скрипта с другого домена получить нельзя. Со своего можно.


Автор: Гость (не зарегистрирован), дата: 20 декабря, 2014 - 15:26
#permalink

Бред содержимое получается на раз два. ))))))


Автор: Гость (не зарегистрирован), дата: 3 марта, 2012 - 22:43
#permalink

При перезагрузке страницы, с помощью метода reload, post данные повторно передаются?


Автор: NikolasGrad, дата: 31 октября, 2012 - 19:59
#permalink

Да передаются.


Автор: false2012 (не зарегистрирован), дата: 26 апреля, 2012 - 11:19
#permalink

немогу понять что это означает:

<html><head></head><body onload="window.location.replace(window.location.toString())"></body></html>

Автор: Darkness Paladin (не зарегистрирован), дата: 27 апреля, 2012 - 16:18
#permalink

это защита от открытия во фрейме. window.location.toString() возвращает не содержимое адресной строки, а адрес, из которого была открыта страница (если ты откроешь чужую страницу страницу во фрейме своего сайта, window.location вернёт не адрес твоего сайта, а адрес страницы). соответственно, если window.location не совпадает с адресной строкой, сработает window.location.replace и произойдёт переход на настоящий сайт.


Автор: false2012 (не зарегистрирован), дата: 13 мая, 2012 - 11:04
#permalink

Спасибо


Автор: assessor, дата: 30 мая, 2012 - 00:03
#permalink

А можно ли обойти эту защиту?


Автор: Гость (не зарегистрирован), дата: 30 апреля, 2012 - 13:35
#permalink

Здравствуйте. Помогите, пожалуйста. Никак не могу сообразить. Мне надо, чтобы по нажатию кнопки шел просчитывались данные и шел переход на другую страницу. У меня переходит на другую страницу, но берет устаревшую из кэша, для просмотра обновленных данных приходится перезагружать страницу вручную. А можно как-нибудь переходить сразу на обновленную страницу или сделать последовательно: сначала переход на другую страницу, а потом её автоматическое обновление?


Автор: Гость (не зарегистрирован), дата: 10 мая, 2012 - 14:47
#permalink

Добавь в ссылку параметр
'&Random=' + new Date().getTime()
Каждый раз при клике Url будет отличаться и страница не будет браться из кэша


Автор: Гость (не зарегистрирован), дата: 30 апреля, 2012 - 14:36
#permalink

А как из вот такого: %D0%AE%D1%80%D0%B8%D0%B9 получить нормальный текст?


Автор: Гость (не зарегистрирован), дата: 13 августа, 2012 - 19:19
#permalink

При входе на сайт выдает вот такой код: Что делать?

С этим XML-файлом не связана ни одна таблица стилей. Ниже показано дерево элементов.

var ad=window.location.href.replace(/#(.*)?/,''); setTimeout("window.location.href='"+ad+"?lIE9tp'",'1000')


Автор: Axdr, дата: 30 августа, 2012 - 00:40
#permalink

Со свойством hash какая-то чехарда. Причем, в разных браузерах по-разному.
Если после решетки что-то есть, то hash включает решетку. Если нет, то не включает, кроме IE8. Зато в IE8 пишешь window.location.hash = "", получаешь window.location.hash - "#"


Автор: cost1k, дата: 13 ноября, 2012 - 15:24
#permalink

подскажите, как открыть ссылку window.location = '...' в новом табе (как через тег с атрибутом target="_blank").


Автор: Sterm (не зарегистрирован), дата: 23 марта, 2013 - 14:10
#permalink

Тоже интересует этот вопрос!


Автор: VorteX DrAgON (не зарегистрирован), дата: 22 ноября, 2012 - 07:40
#permalink

параметры, которые передавались в явном виде получить можно - это хорошо. А вот можно ли получить скрытые параметры, которые через POST передавались и сидят "внутри" браузера и не отображены в url?


Автор: arzai (не зарегистрирован), дата: 13 января, 2013 - 23:46
#permalink

Почему-то после использования location не работает клавиша backspace.

Например после window.location.assign(путь); открывается новая страница, кнопка "назад" в браузере работает, а клавиши backspace - нет. Как сделать, чтобы после перехода backspace работала?


Автор: ВЕТЕРИНАР (не зарегистрирован), дата: 13 мая, 2013 - 15:47
#permalink

Как сделать указание на текущую страницу в браузере?


Автор: zema888, дата: 7 августа, 2013 - 07:27
#permalink

Выше спрашивали: " У меня переходит на другую страницу, но берет устаревшую из кэша, для просмотра обновленных данных приходится перезагружать страницу вручную. А можно как-нибудь переходить сразу на обновленную страницу или сделать последовательно: сначала переход на другую страницу, а потом её автоматическое обновление?"
У меня такая же проблема, но рецепт написанный там "Добавь в ссылку параметр
'&Random=' + new Date().getTime()
Каждый раз при клике Url будет отличаться и страница не будет браться из кэша"
мне не помогает.
Может как то можно заставить браузер обновить кеш? alert() помогает, но мне надо ,чтоб автоматически работала, не кому будет ок нажать.


Автор: Гость (не зарегистрирован), дата: 3 января, 2015 - 18:21
#permalink

if(!name){
name=new Date().getTime().toString()
location.reload(true)}

Однако в Опере, с её агрессивным кэшированием, это не работает.


Автор: olegalimov, дата: 10 октября, 2015 - 18:36
#permalink

почему по этой строке не переводит посетителя?

echo '<script language="javascript"> window.location("https://webvm.ru:1500/ispmgr?&func=auth&username='.$login.'&password='.$pass.'");</script>';

Автор: Alexander Lutsenko (не зарегистрирован), дата: 11 июня, 2016 - 20:36
#permalink

Не подскажете. location.pathname главной страницы сайта всегда возвращает "/"?


Автор: LouD (не зарегистрирован), дата: 2 января, 2017 - 11:30
#permalink

Вот по прочитанному вопрос по свойству hash.
Задача: как убрать финальный пустой хэш (вида site.com/page.html#)?
Решения чистить адресную строку от хэшей не подходят - если значение якоря заполнено, то этот функционал нужен.
Соответственно по этой причине не годится и

history.pushState('', document.title, window.location.pathname);

То есть надо чистить: site.com/page.html# -> site.com/page.html
Но надо оставить: site.com/page.html#anchor

Испробовал вот такой "лобовой" вариант

var myhash = String(window.location.hash);
    if (myhash.length < 1) window.location.hash='';

так вот myhash.length возвращает 0 и при отсутствии хэша, и при варианте site.com/# и при варианте site.com/page.html# - и НЕ ЧИСТИТ этот чертов завершающий # Sad

Попробовал "обмануть":

if (myhash.length < 1) {
        var mypath = String(window.location.pathname);
        if (mypath.length < 2) window.location.hash='';
    }

результат аналогичный: site.com/# решетка гордо в URL Sad


Автор: LouD (не зарегистрирован), дата: 2 января, 2017 - 18:48
#permalink

Решением оказался вот такой ход:

var m = window.location.href.match(/([^#]+)#$/);

if ( m !== null ) {
    window.location.replace(m[1]);
}

Теперь завершающий пустой хэш остается только, если вызывается та же самая страница, то есть без перехода на новый URL (например, на ссылке "Домой" остался такой аппендикс).


Автор: forsstar, дата: 9 января, 2017 - 10:19
#permalink

Для простого получения адреса текущей, обобразится на экране, стрницы -

document.write(location ); // получить адрес текущей страницы


Автор: Drakonoved (не зарегистрирован), дата: 25 августа, 2017 - 10:11
#permalink

У меня с некоторых компов значение document.location.hostname == null.
Это при первой загрузке страницы, если страницу обновить, то встает нормальное значение, но скрипт-то отрабатывается в первый раз.
Из-за чего такое может быть?


Автор: mario games (не зарегистрирован), дата: 25 октября, 2019 - 18:14
#permalink

Здравствуйте. Помогите, пожалуйста. Никак не могу сообразить. Мне надо, чтобы по нажатию кнопки шел просчитывались данные и шел переход на другую страницу. У меня переходит на другую страницу, но берет устаревшую из кэша, для просмотра обновленных данных приходится перезагружать страницу вручную. А можно как-нибудь переходить сразу на обновленную страницу или сделать последовательно: сначала переход на другую страницу, а потом её автоматическое обновление?


Автор: Гость (не зарегистрирован), дата: 16 января, 2020 - 15:55
#permalink

Всем привет.
У меня есть аудио поток m3u и когда переключаешься с wifi на 3g он прекращается и выдает ошибку:
Failed to load resource: net::ERR_NETWORK_CHANGED

Можно ли как то скриптом чекать эту ошибку и если она есть то перезагружать не страницу а область () ?


Автор: ausmalbilder (не зарегистрирован), дата: 1 марта, 2020 - 16:20
#permalink

Приветствуются комментарии:
Полезные.
Дополняющие прочитанное.
Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.


Автор: Никита Трохимчук (не зарегистрирован), дата: 25 мая, 2022 - 20:45
#permalink

Здравствуйте, у меня проблема где только не искал ответа! Значит так
Если пользователь нажал на гиперссылку . Тогда ему вылазит окно для ввода пароля. Если пользователь ввел правильный пароль тогда его перекидывает на страницу(это важно если правильно ввел), но если неправильно тогда текст, можно и страницу-ошибку, это не сильно важно. Я выбрал гиперссылку потому, что input выглядит скучно, а a href по интересней. Кто может подскажите пожалуйста я уже где только не искал ответ. Пробовал сделать развилку if else, но к сожалению на windows.location он не как не реагирует. Может я что то не понимаю!!


 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние темы на форуме
Forum