5
var referrer = $document.referrer;

需要的值

$document.referrer 

在一个变量中。

4

1 回答 1

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;

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

于 2015-11-26T14:36:01.510 回答