• 页面


    总结

    • 由于菜单栏中前进后退的存在,document.referrer获取页面来源的方法并不可靠
    • 可以通过判断 window.opener 是否为 null,来限制通过地址栏输入url访问。但是必须使用 window.open 来实现页面跳转

    document.referrer

    定义

    • 打开到当前页面的那个页面的URI
      • A Uniform Resource Identifier (URI) 是一个紧凑的字符串用来标示抽象或物理资源。
      • 它包括了URL和URN
      • URL和URN的区别在于,URL带有网络访问协议,例如ftp://ftp.is.co.za/rfc/rfc1808.txttel:+1-816-555-1212不属于URL)

    返回空字符串的情况

    • 纠错:跨域只有在特殊的几种方法不可以,其他都是可行的
    • 纠错:https跳转http谷歌和IE9亲测都可以
    • a标签跨域可以获得
    • meta标签来控制不让浏览器发送referer<meta content="never" name="referrer">
      • 请参考https://www.cnblogs.com/qq3279338858/p/10844401.html
    • a标签设置rel="noreferrer"(兼容IE7+)
    • 直接在浏览器中输入地址
    • 通过修改Location进行页面导航的方法,除了以下几种,其余都能成功获取
      • location.assign:IE9跨域后无法获取;同域时谷歌和IE都可以获取
      • location.reload:谷歌可以,IE9不可以。带不带参数都一样
    • history
      • 所有方法在IE9均无法获得(包括back 、forward、go)
      • 谷歌也只有以下方法可以(pushState、replaceState)
    • window.open方式打开新窗口
      • IE获取不到
      • 谷歌可以正常获取
    • 鼠标拖拽打开新窗口
    • 点击Flash内部链接,各个浏览器效果不同(不详述)
    • 在微信对话框中,点击进入微信自身浏览器
    • 扫码进入微信或QQ的浏览器

    window.opener

    定义

    • 如果当前窗口是由另一个窗口打开的, window.opener保留了那个窗口的引用(window对象). 如果当前窗口不是由其他窗口打开的, 则该属性返回 null.

    能够获取的条件

    • 只有通过window.open才会返回对象,其他都是null
      • 跨域时谷歌返回的对象,不能访问资源,只能对窗口本身进行操作
      • IE9同域时可以通过访问 window.opener.location.href 对象去获取丢失的referrer信息。跨域依然能够获取到对象,但location为空
  • 相关阅读:
    Android ContentProvider和getContentResolver
    onContextItemSelected 用法
    Android 控件 之 Menu 菜单
    Android
    Android Cursor类的概念和用法
    android SQLiteOpenHelper使用示例
    JAVA HashMap详细介绍和示例
    HashMap深度解析(二)
    HashMap深度解析(一)
    使用svn遇到的问题---(在编辑器没有配置svn的前提下)
  • 原文地址:https://www.cnblogs.com/qq3279338858/p/10641496.html
Copyright © 2020-2023  润新知