【问题标题】:Why $document.referrer in angular js returning blank. But when i use document.referrer it is returning me value为什么角度 js 中的 $document.referrer 返回空白。但是当我使用 document.referrer 时,它正在返回我的价值
【发布时间】:2015-09-24 13:09:20
【问题描述】:
var referrer = $document.referrer;

需要的值

$document.referrer 

在变量中。

【问题讨论】:

    标签: jquery angularjs jqlite


    【解决方案1】:

    $document 实际上是一个 jqLit​​e/jQuery 查询结果,所以该属性不存在。如果您想获得推荐人,您可以:

    a) 直接访问 DOM 文档:

    var referrer = document.referrer; 
    

    不建议这样做,因为您在编写单元测试时会遇到麻烦。

    b) 引用 jqLit​​e/jQuery 查询结果中的对象:

    var referrer = $document[0].referrer;
    

    我个人也不喜欢这种方法,代码变得丑陋和误导。

    c) 装饰$document

    myApp.config(function($provide){
      $provide.decorator('$document', function($delegate){
    
        $delegate.getReferrer = function() {return document.referrer;};
    
        // alternative you can create a property
        // Object.defineProperty($delegate, 'referrer', {  
        //   get: function() { return document.referrer; }
        // });
    
        return $delegate; 
      });
    });
    

    然后获取referrer:

    var referrer = $document.getReferrer();
    //Or if you created a property...
    //var referrer = $document.referrer;
    

    我更喜欢这个选项,因为你可以在单元测试中轻松地模拟这个对象,而且你的代码更容易理解。

    【讨论】:

    • 或者只是通过 $window.document.referrer 引用它,它可以用于测试。
    猜你喜欢
    • 2018-09-25
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 2013-08-08
    • 2018-09-18
    • 2011-05-22
    相关资源
    最近更新 更多