diff --git a/package.json b/package.json index cf7a1c77..8e93dd9f 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mip", - "version": "1.0.79", + "version": "1.0.80", "description": "mobile instant page", "main": "dist/mip.js", "dependencies": {}, diff --git a/src/util.js b/src/util.js index 5538e6c0..3e4d631c 100755 --- a/src/util.js +++ b/src/util.js @@ -8,6 +8,7 @@ define(function (require) { 'use strict'; var fn = require('./utils/fn'); + var hash = require('./hash'); /** * Exchange a url to cache url. @@ -70,11 +71,20 @@ define(function (require) { /** * 获取页面原mip url,可以将页面mip-cache url处理为原页面 + * 由于cache-url可能会被改写,需要还原 * * @return {string} 原mip页URL */ function getOriginalUrl() { - return parseCacheUrl(window.location.href); + var parsedUrl = parseCacheUrl(window.location.href); + if(parsedUrl == window.location.href) { + // 直接打开MIP页 + return parsedUrl; + } + // mip-cache页面 + var urlWithoutHash = parsedUrl.split('#')[0]; + var originHash = hash.get('mipanchor'); + return urlWithoutHash + (originHash.length ? '#' : '') + originHash; } return { diff --git a/test/util.js b/test/util.js index 50f4dbbe..c8d439c4 100644 --- a/test/util.js +++ b/test/util.js @@ -162,19 +162,8 @@ define(function (require) { }); describe('.getOriginalUrl', function () { - var stub = sinon.stub(util, "getOriginalUrl", function (str) { - return util.parseCacheUrl(str); - }); - - it('mip url', function () { - expect(util.getOriginalUrl('https://www.mipengine.com')).to.equal('https://www.mipengine.com'); - expect(util.getOriginalUrl('http://www.mipengine.com')).to.equal('http://www.mipengine.com'); - expect(util.getOriginalUrl('http://www.mipengine.com/c/index.html')).to.equal('http://www.mipengine.com/c/index.html'); - }); - it('mip-Cache url', function () { - expect(util.getOriginalUrl('//mipcache.bdstatic.com/c/www.mipengine.org')).to.equal('http://www.mipengine.org'); - expect(util.getOriginalUrl('//mipcache.bdstatic.com/c/s/www.mipengine.org')).to.equal('https://www.mipengine.org'); - }); + // 由于getOriginalUrl 直接获取window.location,不能 sinon.stub, 跳过 + // 由于 hash.get 取的是 window.location 而不是传入的 url,mip-cache+hash情况单测跳过 }) }); });