html页面跳转的5中方式

法一:<a/>
// target="_blank"表示保留当前页面,用新标签页打开
<a href="https://smallpdf.cn" target="_blank"  rel="noreferrer">收集优质网站资源</a>
法二:window.location.href
window.location.href="https://smallpdf.cn";
法三:window.open()
// "_blank" 表示保留当前页面,用新标签页打开
window.open("https://smallpdf.cn", "_blank");

<a>警告信息
问题描述
<a href="https://smallpdf.cn" target="_blank"/>

# 上面的写法,会出现下面的警告信息:
warning  Using target="_blank" without rel="noreferrer" is a security risk: see
https://html.spec.whatwg.org/multipage/links.html#link-type-noopener  react/jsx-no-target-blank
解决方案
# 增加属性:rel="noreferrer"
<a href="https://smallpdf.cn" target="_blank" rel="noreferrer"/>
原因详解

当使用target="_blank"打开新标签页时,新页面的window.opener是指向前一个页面,这样就可以控制前一个页面。譬如:当新旧页面在同一个域名下时,在新页面控制台输入 window.opener.alert(1) ,会发现旧页面弹出消息1 。当新旧页面不在同一个域名时,通过window.opener.location.replace 可以改变旧页面的url。所以还是加上rel="noreferrer",把opener对象设置为null,以防后患。

相关链接

页面跳转传递参数
# 传参页面
let a = {
   key:'value'
}
// 对参数进行序列化
let astr = JSOS.stringfy(a)let url = 'https://learn-anything.cn/search?input='+astr;
window.open(url);
# 接受参数页面:https://learn-anything.cn/search
// window.location,存储了本页面相关所有数据
let query = window.location.query;

# 参数解析方式:
const urlTemp = require('url');
let parsedUrl = urlTemp.parse(window.location.href, true);
let para = parsedUrl.query.astr;

# 反序列化得到参数,如果是非序列化参数,无需此步直接使用参数
let a = JSON.parse(para);
相关链接
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值