【发布时间】:2015-09-24 13:09:20
【问题描述】:
var referrer = $document.referrer;
需要的值
$document.referrer
在变量中。
【问题讨论】:
var referrer = $document.referrer;
需要的值
$document.referrer
在变量中。
【问题讨论】:
$document 实际上是一个 jqLite/jQuery 查询结果,所以该属性不存在。如果您想获得推荐人,您可以:
a) 直接访问 DOM 文档:
var referrer = document.referrer;
不建议这样做,因为您在编写单元测试时会遇到麻烦。
b) 引用 jqLite/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 引用它,它可以用于测试。