Я провожу экспертную оценку и обнаружил, что люди используют window.location.search, чтобы проверить, какие парметы были отправлены на данную (поисковую) страницу.
Это безопасно? Я думал, что мы, вероятно, могли бы напечатать параметры в выводе HTML внутри блока скрипта и проверить напечатанные переменные вместо запроса window.location.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если включен javascript, использование window.location.search безопасно.
И просто бесполезная дополнительная информация: это свойство, насколько я знаю, было введено в Netscape Navigator 2 / MS Internet Explorer 3, поэтому я бы сказал, что его довольно безопасно использовать, даже если оно не является частью какого-либо стандарта (пока ).
Безопасно ли использовать window.location.search в 2017 году? :-)
Безопасно, как в «безопасности» или «это будет работать всегда»?
Несмотря на то, что window.location широко распространен, он все еще не является частью стандарта W3C. Однако он был добавлен в рабочий черновик спецификации в 2006 году: в основном это означает, что браузер может или не может поддерживать его. Так что, исходя из принципа «будет ли это работать всегда», я думаю, вы рискуете.
Одно замечание об этом подходе. window.location устанавливается статически при загрузке страницы и не обнаруживает изменения, которые пользователь внес в адресную строку по истечении этого времени. Это не должно вызывать беспокойства, но это важно знать.
Сохраните следующий код как файл html и запустите его в браузере:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml" xml:lang = "en" lang = "en">
<head>
<title>test</title>
</head>
<body>
<a href = "javascript:void(0);"
onclick = "alert(window.location);">click me</a>
</body>
</html>
Якорь «щелкните меня» отобразит текущее расположение окна onclick. Однако, если вы добавите что-нибудь в адресную строку и снова нажмете ссылку, он сообщит о том же, что и в первый раз.
Надеюсь, это не вызывает беспокойства, и я не могу представить, что это каким-либо образом повлияет на вас, но это полезно знать.
Is it safe to do so?
Да. Пример кода для получения параметров в виде карты имя-> значение, предполагая, что вам не нужно несколько значений для каждого параметра:
function getParameters() {
var parameters= new Object();
var parts= window.location.search.substring(1).split('\x26');
for (var parti= parts.length; parti-->0;) {
var subparts= parts[parti].split(';'); // support semicolon separators as well as ampersand (see HTML 4.01 section B.2.2)
for (var subparti= subparts.length; subparti-->0;) {
var parparts= subparts[subparti].split('=', 2);
if (parparts.length==2)
parameters[decodeURIComponent(parparts[0])]= decodeURIComponent(parparts[1]);
}
}
return parameters;
}
Это часть последнего рабочего проекта ECMAScript. Вы должны быть в безопасности, используя его: w3.org/TR/Window/#location