给定一个有效的href,原点、路径名、搜索和散列的正则表达式是什么?
given a valid href, what are regx for origin, pathname, search and hash?
在javascript
中,给定一个有效的url
,例如,
http://seeplai2.trailsandtribulations.nat/admin/items?var=val#here
在window.location
中找到的提取原点、路径名、搜索和散列的表达式是什么?
在regx
中相对较弱,以下是我的猜测:
origin: href.match(/(.*?)('/|'?|#))[1]
pathname: href.match('/'/[^'/]*([^'?#]*)/)[1]
search: (href.indexOf('?')>-1) ? href.match(/'?[^#]*)/)[1] : ''
hash: (href.indexOf('#')>-1) ? href.match(/(#.*)/)[1] : ''
这些看起来对吗?
下面是示例代码:
<a href='/path?var=val1' onclick='doClick(event)'>Anchor1</a>
function doClick(e) {
var href = e.target.href;
var origin = href.match(/regx/)[1];
// if different origin, go there
if( origin != window.location.origin ) return;
// if only hash difference, let default take over
...
// if path different, process here
...
}
为什么使用regexp?
var link = document.createElement("a")
link.setAttribute("href","http://seeplai2.trailsandtribulations.nat/admin/items?var=val#here");
alert(link.search)
比较原点,使用更兼容的
location.protocol + "//" + location.hostname
例如window.onload=function() {
var winOrigin = location.protocol+"//"+location.hostname;
var links = document.links;
for (var i=0,n=links.length;i<n;i++) {
links[i].onclick=function() {
var linkOrigin = this.protocol + "//" + this.hostname;
alert(winOrigin===linkOrigin);
}
}
}
演示;相关文章:
- 用程序搜索JQuery数据表中的文本
- 在html Select中添加搜索
- Ajax Live搜索发布到Laravel视图
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- 学生搜索项目jquery/javascript
- 用于搜索的聚合物嵌套绑定
- 在javascript中搜索具有重复值的两个数组中的匹配值
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 使用javascript搜索具有用户输入的数组
- 淘汰搜索/筛选
- 搜索api在mac上显示对话框
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- 谷歌水印未显示在自定义搜索框中
- 在javascript中搜索项目列表的性能
- 正在搜索JavaScript日期选择器滑块
- JQuery中的活动搜索栏
- 如何在剑道下拉列表中按文本和值搜索
- 谷歌CSE-搜索参数
- 如何让typeahead在我的搜索栏中填充自定义参数
- 给定一个有效的href,原点、路径名、搜索和散列的正则表达式是什么?