位置: 编程技术 - 正文

JavaScript中的document.referrer在各种浏览器测试结果(javascript中的document.write)

编辑:rootadmin

推荐整理分享JavaScript中的document.referrer在各种浏览器测试结果(javascript中的document.write),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript中的document对象,javascript中的document对象,javascript中的document w,javascript中的document,javascript中的document对象,javascript中的document.write,javascript中的document的方法,javascript中的document的方法,内容如对您有帮助,希望把文章链接给更多的朋友!

前段时间需要通过 JavaScript 获取页面的来源,这个操作很简单,使用 document.referrer 就可以获取到了。不过,实际应用中还是有很多意外情况,这儿简单整理一下。

首先遇到的问题,是从 HTTPS 页面转到 HTTP 页面后,document.referrer 的值为空。出于安全性考虑,很多网站的一些重要页面(比如淘宝的登录页面)都会使用 HTTPS 协议。如果某个未登录用户在页面 A(HTTP 页面)点击了页面 B(HTTP 页面)的链接,但页面 B 需要用户登录,于是先跳到登录页面 (HTTPS 页面),登录完成之后再跳回 B(HTTP 页面),这时你会发现 B 页面上取不到 document.referrer 了。也就是说,如果想根据 referrer 来还原用户访问路径的话,如果路径中有 HTTP 页面也有 HTTPS 页面,那么这个路径就会在从 HTTPS 到 HTTP 的地方断掉。

这个问题的根源是浏览器的安全策略,只靠 JavaScript 似乎没有特别好的解决办法。一个迂回的思路是使用 window.name,在 HTTPS 页面将当前页面的 url 写到 window.name 中,再在下一个页面(HTTP 页面)读取。

除了这种情况,其它页面跳转是否都能正常取到 document.referrer 呢?我搜索了一番,发现 这儿 有人整理了一个列表,不过不是很全,例如没有包括垂而不死的 IE6 的情况。于是便自己动手,在虚拟机里装了 N 个浏览器,把各种情况都测试了一下(这真是一个体力活),结果见下表:

操作 IE6 IE7 IE8 IE9 Firefox Chrome Opera Safari 直接在地址栏输入URL “” “” “” “” “” “” “” “” 从书签访问URL “” “” “” “” “” “” “” “” 从页面A点击超链接,跳转到页面B(target=”_self”) √ √ √ √ √ √ √ √ 从页面A点击超链接,跳转到页面B(target=”_blank”) √ √ √ √ √ √ √ √ 从页面A右键单击超链接,在新标签页中打开页面B - √ √ √ √ √ √ “” 从页面A右键单击超链接,在新窗口中打开页面B √ √ √ √ √ √ √ “” 拖动链接到地址栏 “” 无法拖动 无法拖动 “” “” “” “” “” 拖动链接到标签栏 - “” “” “” “” “” “” “” 使用浏览器的前进、后退按钮 √ √ √ √ √ √ √ √ JS 修改 location.href “” “” “” √ √ √ √ √ JS 使用 window.open “” “” “” “” √ √ √ √ 服务器重定向(跳转) 定向之前的页面 定向之前的页面 定向之前的页面 定向之前的页面 定向之前的页面 定向之前的页面 定向之前的页面 定向之前的页面 页面 Meta Refresh “” “” “” “” “” 转向页 转向页 转向页

JavaScript中的document.referrer在各种浏览器测试结果(javascript中的document.write)

上表中的“√”表示能正常取到 referrer,”” 表示 referrer 为空。

除了 IE 外,其它浏览器都是目前官网上能下载到的最新版本,其中 Safari 同时测试了 Windows 版和 Mac 版,结论一样。

另外还有一些情况未做测试,例如点击 Flash 跳转时各浏览器下能否保持 referrer 等。

上表中大部分情况是符合预期的,不过似乎也有几处需要注意的:

1、在 Safari 中,右键打开链接会丢失 referrer;2、在 IE 中,修改 location.href 或使用 window.open 打开页面会丢失 referrer(IE 9 有一点例外,使用 location.href 跳转不会丢失 referrer);3、使用 meta 跳转时,IE / Firefox 下会丢失 referrer。

最后,一个简单的结论是:如果你需要通过 document.referrer 采集页面访问来源,最好不要使用 JS 跳转或打开新窗口,也不要使用 meta 跳转。

javascript定义变量时有var和没有var的区别探讨 我们先来看一段代码functionshow(){alert(abc);}varabc="defg";show();有过C++或Java编程经验的人可能会说:这程序,死定了,变量竟然在引用了该变量的函数后边定

javascript中声明函数的方法及调用函数的返回值 htmlxmlns="

JavaScript匿名函数与委托使用示例 htmlxmlns="

标签: javascript中的document.write

本文链接地址:https://www.jiuchutong.com/biancheng/370176.html 转载请保留说明!

上一篇:js 模式窗口(模式对话框和非模式对话框)的使用介绍(js设置窗口位置)

下一篇:javascript定义变量时有var和没有var的区别探讨(javascript如何定义变量)

  • 进项税抵扣怎么做账
  • 跨月的增值税专用发票未抵扣怎么作废
  • 报税金额和实际做账金额不一样
  • 抵扣认证的发票怎么查询
  • 全资收购企业需要交税吗
  • 城市基础设施配套有哪些
  • 向董事赠送礼品怎么写
  • 固定资产贷款偿还期计算公式
  • 社保缴纳已超标准
  • 公司交的拍卖费计入哪个会计科目?
  • 仓库产品出库到货时间
  • 别人提供原材料加工后加工费
  • 企业收入进私户怎么做账
  • 预收账款多了好还是少了好
  • 营改增的增值税税率
  • 红字发票需要盖章子吗
  • 小规模纳税人核定征收标准
  • 残疾人可以给公司带来税收优惠吗
  • 接待客户的住宿费账务处理
  • 预提 冲销
  • 企业所得税汇算清缴退税怎么做账务处理
  • 关于递延所得税资产负债的表述
  • 学校收取食堂管理费
  • 借款不归还的法律条款
  • 购买原材料无法确认收入
  • 委托代销售应确认什么
  • u盘怎么安装软件
  • php date_diff
  • 去年未计提费用,今年付怎么做账
  • php function
  • php socket_create
  • 供热企业的税收分类编码
  • 广告费和业务宣传费税前扣除基数
  • 营改增后酒店行业有哪些税种
  • 房地产公司收到预售款缴纳印花税吗
  • php 时间
  • vue获取value值
  • 我用ChatGPT做直播技术选型,卷死了同事
  • vue开发环境配置
  • php实现会话的步骤
  • 同一控制下企业合并和非同一控制下企业合并的区别
  • elementui组件有哪些
  • 出售固定资产的损失计入什么科目
  • 退回股东投资款现金流怎么选
  • 工伤报销计入什么科目
  • 税控服务费减免月底怎样结转
  • 跨月的红字发票申请表怎么撤销
  • 投资性房地产转为非投资性房地产
  • 电子银行承兑汇票最长期限
  • 货物逾期保管费怎么算
  • 企业职工福利费的扣除标准是多少?
  • 企业代办业务有哪些
  • 过期食品返厂会重新打日期吗
  • 公司不营业需要交税吗
  • 购买设备怎么开专票
  • 私营公司商业汇票怎么开
  • 收到是怎么写
  • SQL中实现SPLIT函数几种方法总结(必看篇)
  • 储存扩展容量
  • mysql数据库隐藏指定内容
  • 电脑开机出现英文字母开不了机
  • win8系统升级到win10东西还在吗
  • win10弹出提示
  • 升级mac os
  • win8搜索不到自己家的WiFi
  • 为wdcp面板的lnmp服务器添加ipv6支持的方法介绍
  • cocos2d-x 3.4 windows 环境配置
  • cocos2dx屏幕适配解决方案
  • cocos2dx-3.x(二)、坐标系
  • 超级给力的好人有哪些
  • android设计模式的应用场景
  • 菜鸟教程安卓
  • Android之Async-http
  • 使用筷子就餐会不会传染乙肝病毒
  • JavaScript事件 "事件对象"的注意要点
  • 上海个人所得税税率表2023
  • 如何在税务系统增加开票人员
  • 应纳税额减征额账务处理
  • 长春税务局电话举报
  • 深圳市税务网上注销流程图
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设