Jquery 为什么$document.referer为空。但当我使用document.referer时,它会返回我的值
需要价值Jquery 为什么$document.referer为空。但当我使用document.referer时,它会返回我的值,jquery,angularjs,jqlite,Jquery,Angularjs,Jqlite,需要价值 var referrer = $document.referrer; 在变量中。$document实际上是一个jqLite/jQuery查询结果soi属性不存在。如果您想获得推荐人,您可以: a直接访问DOM文档: $document.referrer 不建议这样做,因为编写单元测试时会遇到麻烦 b引用jqLite/jQuery结果中的对象: var referrer = document.referrer; 就我个人而言,我也不喜欢这种方法,代码变得丑陋和误导 c.文件:
var referrer = $document.referrer;
在变量中。$document实际上是一个jqLite/jQuery查询结果soi属性不存在。如果您想获得推荐人,您可以:
a直接访问DOM文档:
$document.referrer
不建议这样做,因为编写单元测试时会遇到麻烦
b引用jqLite/jQuery结果中的对象:
var referrer = document.referrer;
就我个人而言,我也不喜欢这种方法,代码变得丑陋和误导
c.文件:
然后获得推荐人:
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;
});
});
我更喜欢这个选项,因为你可以在单元测试中轻松地模拟这个对象,你的代码也更容易理解。或者只是通过$window.document.referer引用它,这对测试来说是可模拟的。
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;