网页的url怎么获取
浏览器地址栏里那串字符,网页就是网页你正在看的网页的身份证。想把它取出来用,网页JavaScript里一行代码就搞定: 但你要是网页觉得这就完事了,那可就太天真了。网页我上周调试一个电商网站,网页发现用户从微信里点开链接,网页地址栏里不光有商品ID,网页还跟着一串 所以得学会拆。JavaScript里location对象自带好几个属性,像瑞士军刀一样好用。想要去掉参数的纯净地址?用 还有种场景,你写了个单页应用,用户点来点去地址栏都不刷新,但URL变了。这时候想监听URL变化,光靠 要是你在Node.js环境,或者写爬虫脚本,那就没法用window对象了。这时候得看请求头里的 说个坑。之前帮朋友调一个H5页面,安卓微信里打开一切正常,iOS Safari里 最后说个冷门的。有些极端情况,页面被嵌在iframe里,你想获取的是iframe外层那个真正地址栏里的URL,而不是iframe自己的src。这时候得用 获取URL这活儿,看着简单,实际用起来全是细节。核心就记住一句话:先想清楚你要的是完整地址、纯净地址、还是某个特定部分,然后再决定用哪个API。别一把梭哈拿window.location.href。网页这行代码返回的网页是完整地址,从https://一直到最后那个斜杠,网页一个字符都不会少。网页?网页from=wechat&utm_source=social这种参数。这时候你拿window.location.href取到的网页整串地址,拿去跟数据库里存的网页标准URL比对,铁定对不上——因为后面那串参数每次点击都可能不一样。window.location.origin + window.location.pathname。origin给你协议加域名,比如https://example.com,pathname给你从第一个斜杠开始的路径,比如/products/12345。拼起来就是干净利落的核心地址,不带任何追踪参数。window.location.href读一次可不够。得用History API里的popstate事件,或者干脆每隔几百毫秒轮询一次对比新旧URL。我见过有个老项目就是这么干的,写了个setInterval每秒查一次,虽然笨,但管用。Referer字段——但注意,这个字段经常被隐私设置屏蔽,而且不是所有请求都带。更可靠的做法是用new URL(request.url),把原生请求地址丢进去解析,.pathname、.searchParams这些方法照样能用。window.location.href取到的地址居然把中文参数编码成了%XX%XX这种乱码。那时候才意识到,URL里的非ASCII字符在不同浏览器里表现不一致。解决办法是拿到地址后统一用decodeURIComponent()解码一遍,把%XX还原成正常字符。window.top.location.href。但小心,如果外层页面跟iframe不同域,浏览器会直接抛安全错误,你连读都读不到。这种情况只能用document.referrer碰碰运气,拿到的是上一跳的地址,不是当前外层地址。href完事,后患无穷。
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-