关于Y.getLocation的简介是
Returns the `location` object from the window/frame in which this YUI instance operates, or `undefined` when executing in a non-browser environment
意思就是从window/frame中的YUI实例运行时,或者没有浏览器环境下,返回一个Location对象,原因是低版本的chrome和safafi会有一个Bug存在
[WebKit Bug 34679](https://bugs.webkit.org/show_bug.cgi?id=34679)
当你在一个
location(function(window){ // A convenient shortcut. var win_loc = window.location, loc = location, state; (function loopy(){ console.log([ 'win_loc.href: ' + typeof win_loc.href, 'loc.href: ' + typeof loc.href, 'location.href: ' + typeof location.href, 'window.location.href: ' + typeof window.location.href ].join(', ')); timeout_id = setTimeout( loopy, 1000 ); })(); })(this);
当我们再随意点击一个链接后,通过后退再次返回这个函数所存在的页面时,在safari(5.1.7)中,前两个变成了undefined,
测试地址http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/
YUI的解决方案
locationY.getLocation = function(){ var win = Y.config.win; return win & win.location; }