diff --git a/src/core/render/compiler.js b/src/core/render/compiler.js index 0462f19a7..4c7c04522 100644 --- a/src/core/render/compiler.js +++ b/src/core/render/compiler.js @@ -82,7 +82,7 @@ renderer.code = function (code, lang = '') { renderer.link = function (href, title, text) { let blank = '' if (!/:|(\/{2})/.test(href)) { - href = toURL(href) + href = toURL(href, null, currentPath) } else { blank = ' target="_blank"' } diff --git a/src/core/route/hash.js b/src/core/route/hash.js index beba1f271..417ae96ae 100644 --- a/src/core/route/hash.js +++ b/src/core/route/hash.js @@ -64,13 +64,17 @@ export function parse (path = window.location.href) { * to URL * @param {string} path * @param {object} qs query params + * @param {string} currentRoute optional current route */ -export function toURL (path, params) { +export function toURL (path, params, currentRoute) { + const local = currentRoute && path[0] === '#' const route = parse(replaceSlug(path)) route.query = merge({}, route.query, params) path = route.path + stringifyQuery(route.query) path = path.replace(/\.md(\?)|\.md$/, '$1') + if (local) path = currentRoute + path + return cleanPath('#/' + path) }