PHP如何检测浏览器标签页是否通过target参数打开及对应target值
解决方案
方案1:直接使用window.name(最推荐)
window.open()的第二个参数本身就是目标窗口的window.name属性值,不需要额外传参,原生支持跨域场景,刷新页面值也不会丢失:
- 打开窗口的代码保持原有写法即可:
window.open(href, target='pdf');
- 新窗口内直接读取
window.name做判断:
const $check_target = window.name === 'pdf' ? 1 : 2;
注意:命名尽量增加业务前缀避免和其他逻辑冲突,比如
mybiz_pdf,减少重名概率。
方案2:URL参数传值
如果担心window.name被其他逻辑占用,可以把标识拼到打开的URL里:
- 打开窗口时拼接参数:
window.open(`${href}?open_target=pdf`, 'pdf');
- 新窗口内读取URL参数判断:
const searchParams = new URLSearchParams(window.location.search); const openTarget = searchParams.get('open_target'); const $check_target = openTarget === 'pdf' ? 1 : 2;
注意:如果URL本身已有其他参数,需要用
&拼接,避免参数格式错误。
方案3:同域场景用sessionStorage存储
如果两个窗口同域,也可以通过存储介质传值:
- 打开窗口前写入标识:
sessionStorage.setItem('open_target', 'pdf'); window.open(href, 'pdf');
- 新窗口内读取后做清理避免干扰其他窗口:
const openTarget = sessionStorage.getItem('open_target'); const $check_target = openTarget === 'pdf' ? 1 : 2; sessionStorage.removeItem('open_target');
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

