Я использую jQuery. Как мне получить путь к текущему URL-адресу и назначить его переменной?
Пример URL:
http://localhost/menuname.de?foo=bar&number=0
Я думаю, что вопрос следует заменить на запрос jQuery, поскольку для этого есть ответ, независимо от того, требуется ли jQuery для выполнения задачи.
возможный дубликат Получить текущий URL-адрес с помощью JavaScript?
@goodeye Нет, jQuery не позволяет получить местоположение; для трекера ошибок jQuery: »Возможно, это сработало, но никогда не поддерживалось и не документировалось. Просто используйте document.location.href, который быстрее, проще и понятнее. «Другими словами, некоторые люди использовали jQuery для получения местоположения, но они полагались на ошибку, а не на функцию. См .: bugs.jquery.com/ticket/7858



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


Вы захотите использовать встроенный в JavaScript объект window.location.
это не вернет товары после '?' в месте.
@majidgeek у меня работает в Firefox, Chrome и IE. Можете ли вы предоставить тестовый пример этого взлома?
может подтвердить хотя бы в консоли, что window.location.pathname ничего не получает после ?
Чтобы получить путь, вы можете использовать:
var pathname = window.location.pathname; // Returns path only (/path/example.html)
var url = window.location.href; // Returns full URL (https://example.com/path/example.html)
var origin = window.location.origin; // Returns base URL (https://example.com)
Свойства объекта локации: developer.mozilla.org/en/DOM/window.location
JQuery не только не убил его, но и дал Javascript новую жизнь. Понимают ли новые программисты на C# / Java указатели? Нет. Им нужно? Не совсем, новые абстракции достаточно мощны, чтобы это не имело значения.
"Как выполнить XYZ в jQuery", и ответ - простой javascript - довольно распространен. Возможно, вы знаете, как что-то делать с помощью простого javascript; однако из-за несоответствий в браузере вы можете предпочесть использовать "jQuery". Я помню, как до jQuery или фреймворка я сначала проверял браузер, а затем делал то, что хотел, несколькими способами. Так что jQuery убивает простой js ... да, слава богу, но он также делает его пригодным для использования.
это не работает для полного URL. Например. для "mail.google.com/mail/u/0/#mbox/13005b79fe72f448" это вернет только / mail / u / 0
@dwaynemac: Верно, вам нужен window.location.hash, чтобы получить хеш из URL.
@flesh LOL, почему "указатели" всегда используются как ссылка на "старину" ... это просто указатель. В этом контексте более уместно вернуться к char [] и необходимости создать string.h для обработки myVar = "Действительно сложный объект с именем STRING";
Эммм, ... window.location.pathname получает URL только вверх "?" и не получает параметры запроса, как указано в вопросе.
Вот отличный список всех свойств с примерами объекта местоположения: tech-blog.maddyzone.com/javascript/…
@RyanDoherty, знаете ли вы, как можно было бы получить только часть / menuname, у меня есть URL-адрес, который является базисным / общедоступным / home, и мне нужно получить часть Home с этого URL-адреса
идеально ты гений
Я хотел бы добиться аналогичной функциональности, но немного другой, поскольку я хочу узнать, имеет ли строка html текущий URL-адрес домена. Может ли кто-нибудь помочь в этом? Вопрос: stackoverflow.com/questions/57883657/…
Большое спасибо за ответ! Я пытался заставить его работать, используя внешний файл php, но ваш метод javascript намного лучше.
Если вам нужны хэш-параметры, присутствующие в URL-адресе, window.location.href может быть лучшим выбором.
window.location.pathname
=> /search
window.location.href
=> www.website.com/search#race_type=1
Если кому-то нужен только хеш-тег, можно вызвать window.location.href
Я думаю, что @AmitPatel означает window.location.hash
Просто добавьте эту функцию в JavaScript, и она вернет абсолютный путь текущего пути.
function getAbsolutePath() {
var loc = window.location;
var pathName = loc.pathname.substring(0, loc.pathname.lastIndexOf('/') + 1);
return loc.href.substring(0, loc.href.length - ((loc.pathname + loc.search + loc.hash).length - pathName.length));
}
Надеюсь, у вас это сработает.
Это отлично помогло в сценарии, в котором у меня было несколько жестко закодированных базовых URL-адресов. Я предпочитаю не иметь завершающего символа '/' в корне и вставлять его в путь, поэтому я просто сделал вторую строку var pathName = loc.pathname.substring(0, loc.pathname.lastIndexOf('/'));
В чистом стиле jQuery:
$(location).attr('href');
Объект местоположения также имеет другие свойства, такие как хост, хэш, протокол и путь.
Очевидно, использование $ (location) в jQuery не поддерживается и не рекомендуется: bugs.jquery.com/ticket/7858
@Peter Ошибка закрыта как недействительная.
@ mc10: «Недействительная» часть относится к запросу на поддержку $ (location); это НЕ следует использовать.
Этот ответ не нужен, и вопрос и ответ можно обновить, чтобы не использовать jquery. Причины можно найти здесь bugs.jquery.com/ticket/7858#comment:4
+1 Потому что я даже не знал, что вы можете использовать .attr () на месте. Но лучше использовать window.location.
@HaralanDobrev: Вы не сможете делать .attr() на месте. (1) Это не элемент, поэтому $(location) в лучшем случае теневой, и (2) даже если он работает, вы должны использовать .prop() для получения свойств. .attr() предназначен для атрибутов HTML.
Только для имени хоста используйте:
window.location.hostname
Это более сложный вопрос, чем многие могут подумать. Некоторые браузеры поддерживают встроенные объекты местоположения JavaScript и связанные с ними параметры / методы, доступные через window.location или document.location. Однако разные версии Internet Explorer (6,7) не поддерживают эти методы одинаково (window.location.href? window.location.replace() не поддерживаются), поэтому вам придется обращаться к ним по-разному, постоянно записывая условный код, чтобы держать Internet Explorer в руке. .
Итак, если у вас есть доступный и загруженный jQuery, вы также можете использовать jQuery (location), как упоминалось другими, потому что он решает эти проблемы. Если, однако, вы выполняете - для примера - перенаправление геолокации на стороне клиента с помощью JavaScript (то есть, используя Google Maps API и методы объекта определения местоположения), тогда вы можете не захотеть загружать всю библиотеку jQuery и написать свой условный код, который проверяет каждую версию Internet Explorer / Firefox / и т. д.
Internet Explorer огорчает кошку, занимающуюся программированием внешнего интерфейса, но jQuery - это просто тарелка молока.
Дополнительно: bugs.jquery.com/ticket/8138. В источнике jQuery 1.8.0 есть комментарий: // # 8138, IE может выдать исключение при доступе // к полю из window.location, если задан document.domain.
window.location даст вам текущий URL, и вы можете извлечь из него все, что захотите ...
Если вы хотите получить путь к корневому сайту, используйте это:
$(location).attr('href').replace($(location).attr('pathname'),'');
разве это не будет .replace('#.*', '')? Убрать не только решетку, но и все, что после нее?
Это также будет работать:
var currentURL = window.location.href;
Это дает полный URL-адрес, который ищет большинство людей.
У меня есть это, чтобы вырезать переменные GET.
var loc = window.location;
var currentURL = loc.protocol + '//' + loc.host + loc.pathname;
var path = location.pathname возвращает путь к текущему URL (jQuery не нужен). Использование window.location необязательно.
var currenturl = jQuery(location).attr('href');
Вы можете зарегистрировать window.location и увидеть все параметры, используя только URL:
window.location.origin
для всего пути используйте:
window.location.href
есть еще и локация.__
.host
.hostname
.protocol
.pathname
Не следует его использовать, потому что location.origin не работает в Internet Explorer.
http://www.refulz.com:8082/index.php#tab2?foo=789
Property Result
------------------------------------------
host www.refulz.com:8082
hostname www.refulz.com
port 8082
protocol http:
pathname index.php
href http://www.refulz.com:8082/index.php#tab2
hash #tab2
search ?foo=789
var x = $(location).attr('<property>');
Это будет работать, только если у вас есть jQuery. Например:
<html>
<script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script>
$(location).attr('href'); // http://www.refulz.com:8082/index.php#tab2
$(location).attr('pathname'); // index.php
</script>
</html>
Это то же объяснение, что и предыдущее, но со всеми элементами объекта. Отличный ответ.
Должен быть /index.php вместо index.php в качестве пути.
Согласно bugs.jquery.com/ticket/7858 это работает только случайно. Кроме того, attr предполагается использовать только для объектов DOM, для вещей, которые могут быть установлены с помощью атрибутов HTML.
Ниже приведены примеры полезных фрагментов кода, которые можно использовать - некоторые из примеров используют стандартные функции JavaScript и не относятся к jQuery:
См. 8 полезных фрагментов jQuery для URL-адресов и строк запросов.
Если есть кто-то, кто хочет объединить URL и хэш-тег, объедините две функции:
var pathname = window.location.pathname + document.location.hash;
Чтобы уточнить: вам вообще не нужно использовать jQuery, функция javascript выше вернет то, о чем просил OP?
Чтобы получить URL-адрес родительского окна из iframe:
$(window.parent.location).attr('href');
NB: работает только в том же домене
Вот пример получения текущего URL-адреса с помощью jQuery и JavaScript:
$(document).ready(function() {
//jQuery
$(location).attr('href');
//Pure JavaScript
var pathname = window.location.pathname;
// To show it in an alert window
alert(window.location);
});
$.getJSON("idcheck.php?callback=?", { url:$(location).attr('href')}, function(json){
//alert(json.message);
});
Используйте window.location.href. Это даст вам полный URL.
См. purl.js. Это действительно поможет и может быть использовано в зависимости от jQuery. Используйте это так:
$.url().param("yourparam");
window.location - это объект в javascript. он возвращает следующие данные
window.location.host #returns host
window.location.hostname #returns hostname
window.location.path #return path
window.location.href #returns full current url
window.location.port #returns the port
window.location.protocol #returns the protocol
в jquery вы можете использовать
$(location).attr('host'); #returns host
$(location).attr('hostname'); #returns hostname
$(location).attr('path'); #returns path
$(location).attr('href'); #returns href
$(location).attr('port'); #returns port
$(location).attr('protocol'); #returns protocol
что насчет windo.location.origin?
В jstl мы можем получить доступ к текущему URL-адресу с помощью pageContext.request.contextPath. Если вы хотите выполнить вызов ajax,
url = "${pageContext.request.contextPath}" + "/controller/path"
Пример: на странице http://stackoverflow.com/questions/406192 это даст http://stackoverflow.com/controller/path
// get current URL
$(location).attr('href');
var pathname = window.location.pathname;
alert(window.location);
java-script предоставляет множество методов для получения текущего URL-адреса, который отображается в адресной строке браузера.
Тестовый URL:
http://
stackoverflow.com/questions/5515310/get-current-url-with-jquery/32942762
?
rq=1&page=2&tab=active&answertab=votes
#
32942762
resourceAddress.hash();
console.info('URL Object ', webAddress);
console.info('Parameters ', param_values);
Функция:
var webAddress = {};
var param_values = {};
var protocol = '';
var resourceAddress = {
fullAddress : function () {
var addressBar = window.location.href;
if ( addressBar != '' && addressBar != 'undefined') {
webAddress[ 'href' ] = addressBar;
}
},
protocol_identifier : function () { resourceAddress.fullAddress();
protocol = window.location.protocol.replace(':', '');
if ( protocol != '' && protocol != 'undefined') {
webAddress[ 'protocol' ] = protocol;
}
},
domain : function () { resourceAddress.protocol_identifier();
var domain = window.location.hostname;
if ( domain != '' && domain != 'undefined' && typeOfVar(domain) === 'string') {
webAddress[ 'domain' ] = domain;
var port = window.location.port;
if ( (port == '' || port == 'undefined') && typeOfVar(port) === 'string') {
if (protocol == 'http') port = '80';
if (protocol == 'https') port = '443';
}
webAddress[ 'port' ] = port;
}
},
pathname : function () { resourceAddress.domain();
var resourcePath = window.location.pathname;
if ( resourcePath != '' && resourcePath != 'undefined') {
webAddress[ 'resourcePath' ] = resourcePath;
}
},
params : function () { resourceAddress.pathname();
var v_args = location.search.substring(1).split("&");
if ( v_args != '' && v_args != 'undefined')
for (var i = 0; i < v_args.length; i++) {
var pair = v_args[i].split(" = ");
if ( typeOfVar( pair ) === 'array' ) {
param_values[ decodeURIComponent( pair[0] ) ] = decodeURIComponent( pair[1] );
}
}
webAddress[ 'params' ] = param_values;
},
hash : function () { resourceAddress.params();
var fragment = window.location.hash.substring(1);
if ( fragment != '' && fragment != 'undefined')
webAddress[ 'hash' ] = fragment;
}
};
function typeOfVar (obj) {
return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase();
}
EX: с номерами портов по умолчанию
<protocol>//<hostname>:<port>/<pathname><search><hash>
https://en.wikipedia.org:443/wiki/Pretty_Good_Privacy
http://stackoverflow.com:80/
Доменные имена - это те имена, которые вы регистрируете в соответствии с правилами и процедурами дерева системы доменных имен (DNS). DNS-серверы того, кто управляет вашим доменом с помощью IP-адреса для адресации. В иерархии DNS-серверов Корневое имя stackoverlfow.com - com.
gTLDs - com « stackoverflow (OR) in « co « google
В локальной системе вам необходимо поддерживать домены, которые не являются ОБЩИМИ в файлах хоста.
localhost.yash.com « localhsot - subdomain(web-server), yash.com - maindomain(Proxy-Server).
myLocalApplication.com 172.89.23.777
Если параметр имеет Эпоха?date=1467708674, используйте.
var epochDate = 1467708674; var date = new Date( epochDate );
URL аутентификации с именем пользователя: пароль, если usernaem / password содержит символ @
лик:
Username = `my_email@gmail`
Password = `Yash@777`
тогда вам нужно URL-адрес закодировать @ как %40. Refer...
http://my_email%40gmail.com:Yash%[email protected]_site.com
encodeURI() (vs) Пример encodeURIComponent()
var testURL = "http:my_email@gmail:Yash777@//stackoverflow.com?tab=active&page=1#32942762";
var Uri = "/:@?&=,#", UriComponent = "$;+", Unescaped = "(-_.!~*')"; // Fixed
var encodeURI_Str = encodeURI(Uri) +' '+ encodeURI( UriComponent ) +' '+ encodeURI(Unescaped);
var encodeURIComponent_Str = encodeURIComponent( Uri ) +' '+ encodeURIComponent( UriComponent ) +' '+ encodeURIComponent( Unescaped );
console.info(encodeURI_Str, '\n', encodeURIComponent_Str);
/*
/:@?&=,# +$; (-_.!~*')
%2F%3A%40%3F%26%3D%2C%23 %2B%24%3B (-_.!~*')
*/
var newURL = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname;
вы должны добавить некоторые пояснения к своему ответу.
Вы можете просто получить свой путь, используя сам js, window.location или location предоставят вам объект текущего URL
console.info("Origin - ",location.origin);
console.info("Entire URL - ",location.href);
console.info("Path Beyond URL - ",location.pathname);Наиболее часто используемые топ-3:
1. window.location.hostname
2. window.location.href
3. window.location.pathname
Все браузеры поддерживают объект окна Javascript. Он определяет окно браузера.
Глобальные объекты и функции автоматически становятся частью оконного объекта.
Все глобальные переменные являются свойствами оконных объектов, а все глобальные функции - его методами.
Весь HTML-документ также является свойством окна.
Таким образом, вы можете использовать объект window.location для получения всех атрибутов, связанных с URL-адресом.
Javascript
console.info(window.location.host); //returns host
console.info(window.location.hostname); //returns hostname
console.info(window.location.pathname); //return path
console.info(window.location.href); //returns full current url
console.info(window.location.port); //returns the port
console.info(window.location.protocol) //returns the protocolJQuery
console.info("host = "+$(location).attr('host'));
console.info("hostname = "+$(location).attr('hostname'));
console.info("pathname = "+$(location).attr('pathname'));
console.info("href = "+$(location).attr('href'));
console.info("port = "+$(location).attr('port'));
console.info("protocol = "+$(location).attr('protocol'));<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>Я вижу location.pathname там, где вы используете location.path - нужно ли обновлять этот ответ?
@Edward Обновлено
С помощью следующего кода вы можете получить текущий URL-адрес в JQuery.
$(location).attr('hostname'); //origin URL
$(location).attr('pathname'); // path name
$(location).attr('hash'); // everything comes after hash
САМЫЙ КОРОТКИЙ способ (11 символов), в котором вы можете это сделать,
let myUrl = ''+location
console.info(myUrl);
вы также можете увидеть tech-blog.maddyzone.com/javascript/…