在JavaScript中获取当前url?
我正在使用jQuery。 如何获取当前URL的path并将其分配给variables?
示例url:
http://localhost/menuname.de?foo=bar&number=0
要获得path,您可以使用:
var pathname = window.location.pathname; // Returns path only var url = window.location.href; // Returns full URL
在纯粹的jQuery风格:
$(location).attr('href');
位置对象还具有其他属性,如主机,散列,协议和path名。
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> $(location).attr('href'); // http://www.refulz.com:8082/index.php#tab2 $(location).attr('pathname'); // index.php </script> </html>
如果你需要URL中存在的哈希参数, window.location.href
可能是一个更好的select。
window.location.pathname => /search window.location.href => www.website.com/search#race_type=1
您将要使用JavaScript的内置window.location
对象。
只需在JavaScript中添加此函数,它将返回当前path的绝对path。
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)); }
我希望它适合你。
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
这是比许多人想象的更复杂的问题。 多个浏览器支持通过window.location
或document.location
访问的内置JavaScript位置对象和相关的参数/方法。 但是,Internet Explorer(6,7)的不同版本不支持这些方法window.location.replace()
不支持window.location.href
? window.location.replace()
),所以你必须通过写条件一直编码以手持Internet Explorer。
所以,如果你有jQuery的可用和加载,你可能会像其他人提到的那样使用jQuery(location),因为它解决了这些问题。 但是,如果您正在做一个示例 – 通过JavaScript进行一些客户端地理位置redirect(即使用Google Maps API和位置对象方法),那么您可能不希望加载整个jQuery库并编写条件代码检查每个版本的Internet Explorer / Firefox /等。
Internet Explorer使前端编码猫不高兴,但jQuery是一盘牛奶。
仅限主机名称,请使用:
window.location.hostname
这也将工作:
var currentURL = window.location.href;
您可以loggingwindow.location并查看所有选项,仅供URL使用:
window.location.origin
对于整个path使用:
window.location.href
还有位置。 _ _
.host .hostname .protocol .pathname
这将使用JavaScript / jQuery返回当前页面的绝对URL 。
-
document.URL
-
$("*").context.baseURI
-
location.href
如果有人想要连接URL和哈希标记,则结合两个函数:
var pathname = window.location.pathname + document.location.hash;
java-script提供了很多方法来检索浏览器地址栏中显示的当前URL。
testingurl: http://stackoverflow.com/questions/5515310/is-there-a-standard-function-to-check-for-null-undefined-or-blank-variables-in/32942762?rq=1&page=2&tab=active&answertab=votes#32942762
: http://stackoverflow.com/questions/5515310/is-there-a-standard-function-to-check-for-null-undefined-or-blank-variables-in/32942762?rq=1&page=2&tab=active&answertab=votes#32942762
resourceAddress.hash(); console.log('URL Object ', webAddress); console.log('Parameters ', param_values);
function:
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(); }
- 协议« Web浏览器按照WebHosted Applications和Web Client(浏览器)之间的通信规则使用Internet协议。 (http = 80 ,https(SSL)= 443 ,ftp = 21等)
EX:使用默认端口号
<protocol>//<hostname>:<port>/<pathname><search><hash> https://en.wikipedia.org:443/wiki/Pretty_Good_Privacy http://stackoverflow.com:80/
- (//)“主机”是在因特网上提供给终点(资源所在的机器)的名称。 http://www.stackoverflow.com – 应用程序的DNS IP地址(或)localhost:8080 – localhost
域名是您通过域名系统(DNS)树的规则和过程注册的域名。 用于pipe理您的域的IP地址用于寻址目的的DNS服务器。 在DNS服务器层次结构中,stackoverlfow.com的根名称是com。
gTLDs - com « stackoverflow (OR) in « co « google
本地系统,你必须保持在主机文件中不是PUBLIC的域。 localhost.yash.com « localhsot - subdomain(
web-server
), yash.com - maindomain(
Proxy-Server
). myLocalApplication.com 172.89.23.777
). myLocalApplication.com 172.89.23.777
- (/)“该path提供有关Web客户端要访问的主机内的特定资源的信息
- (?)“一个可选的查询是传递由分隔符(&)分隔的一系列属性值对。
- (#)“一个可选的片段通常是一个特定元素的id属性,Web浏览器将这个元素滚动到视图中。
如果参数有Epoch ?date=1467708674
则使用。
var epochDate = 1467708674; var date = new Date( epochDate );
url
我有这个去掉GETvariables。
var loc = window.location; var currentURL = loc.protocol + '//' + loc.host + loc.pathname;
var currenturl = jQuery(location).attr('href');
从iframe中获取父窗口的URL:
$(window.parent.location).attr('href');
NB:只适用于同一个域名
以下是可以使用的有用代码片段的示例 – 其中一些示例使用标准的JavaScript函数,并不特定于jQuery:
请参阅8个有用的jQuery片段URL和查询string 。
以下是使用jQuery和JavaScript获取当前URL的示例:
$(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 。
window.location会给你当前的URL ,你可以从它提取任何你想要的…
如果你想获得根站点的path,使用这个:
$(location).attr('href').replace($(location).attr('pathname'),'');
var path = location.pathname
返回jQuery中当前URL的path。 没有必要使用window
。
请参阅purl.js。 这将真正帮助,也可以使用,取决于jQuery。 像这样使用它:
$.url().param("yourparam");
你可以简单地使用js自己的path, window.location
或者location
将给你当前URL的对象
console.log("Origin - ",location.origin); console.log("Entire URL - ",location.href); console.log("Path Beyond URL - ",location.pathname);
在jstl中,我们可以使用pageContext.request.contextPath
来访问当前的urlpath,如果你想做一个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);
var newURL = window.location.protocol +“//”+ window.location.host +“/”+ window.location.pathname;
非常常用的前三名是
1. window.location.hostname 2. window.location.href 3. window.location.pathname