如何判断来源URL(Referrer URL)是否包含URL参数?
如何判断来源URL是否包含参数?
嘿,我来帮你搞定这个问题!你遇到的控制台输出ƒ search() { [native code] }的问题,根源在于**document.referrer返回的是字符串类型的URL,而非URL对象**——你调用的.search()其实是字符串原型上的查找方法,不是用来获取URL参数的属性,这就导致了不符合预期的结果。
要正确判断来源URL是否存在参数,我们需要先把referrer字符串转换成URL对象,再通过它的search属性来判断,具体步骤如下:
- 先获取来源URL字符串,确认它不为空(直接打开页面时referrer可能是空值)
- 将字符串转为
URL对象,让浏览器帮我们正确解析URL结构 - 检查
URL对象的search属性:如果它不是空字符串,就说明来源URL带有参数
完整代码示例
var referrer = document.referrer; // 先判断是否存在来源URL if (referrer) { try { // 将referrer字符串转为URL对象 const referrerUrl = new URL(referrer); // 若search属性非空,说明存在参数 if (referrerUrl.search) { // 在这里编写修改按钮跳转链接的逻辑 urlbutton.href = "你的目标跳转链接"; } } catch (error) { // 处理来源URL格式无效的异常情况 console.error("无效的来源URL:", error); } }
补充说明
URL对象的search属性会直接返回以?开头的参数字符串(比如?id=123),如果没有参数则是空字符串,判断起来非常直观- 加上
try-catch是为了处理来源URL格式不合法的情况,避免异常中断后续代码执行;如果能确保referrer总是合法的URL,可以省略这部分
内容的提问来源于stack exchange,提问作者Sybrentjuh
相关产品推荐
相关产品推荐

