为什么$ js中的document.referrer返回空白。但是当我使用document.referrer时它会给我带来价值

时间:2015-09-24 13:09:21

标签: jquery angularjs jqlite

var referrer = $document.referrer;

需要

的值
$document.referrer 

在变量中。

1 个答案:

答案 0 :(得分:3)

$ 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; 
  });
});

然后获取推荐人:

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

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