Fix relative URL parsing (fix #4471)

This commit is contained in:
the1812 2023-11-19 16:11:54 +08:00
parent 3e8f26e517
commit d13865099f

View File

@ -9,6 +9,7 @@ const entry = async () => {
if (isNotHtml() || isIframe()) { if (isNotHtml() || isIframe()) {
return return
} }
/* spell-checker: disable */
const builtInNoClean = ['videocard_series'] const builtInNoClean = ['videocard_series']
const [noClean] = registerAndGetData('urlParamsClean.noClean', builtInNoClean) const [noClean] = registerAndGetData('urlParamsClean.noClean', builtInNoClean)
const builtInBlockParams = [ const builtInBlockParams = [
@ -90,6 +91,7 @@ const entry = async () => {
param: 'noReffer', param: 'noReffer',
}, },
] ]
/* spell-checker: enable */
const [siteSpecifiedParams] = registerAndGetData( const [siteSpecifiedParams] = registerAndGetData(
'urlParamsClean.siteSpecifiedParams', 'urlParamsClean.siteSpecifiedParams',
builtInSiteSpecifiedParams, builtInSiteSpecifiedParams,
@ -139,9 +141,17 @@ const entry = async () => {
url: string, url: string,
...restArgs: unknown[] ...restArgs: unknown[]
) { ) {
const newUrl = getCleanUrl(url) const resolvedUrl = (() => {
try {
return new URL(url, location.origin + location.pathname).toString()
} catch (error) {
console.warn('History API URL', `解析失败: ${url}`)
return url
}
})()
const newUrl = getCleanUrl(resolvedUrl)
if (newUrl !== url) { if (newUrl !== url) {
console.log('History API 拦截', url, newUrl) console.log('History API 拦截', resolvedUrl, newUrl)
return original.call(this, data, unused, newUrl, ...restArgs) return original.call(this, data, unused, newUrl, ...restArgs)
} }
return original.call(this, data, unused, url, ...restArgs) return original.call(this, data, unused, url, ...restArgs)
@ -171,5 +181,6 @@ export const component = defineComponentMetadata({
displayName, displayName,
entry, entry,
tags: [componentsTags.utils], tags: [componentsTags.utils],
/* spell-checker: disable */
urlExclude: [/game\.bilibili\.com\/fgo/, /live\.bilibili\.com\/p\/html\/live-app-hotrank\//], urlExclude: [/game\.bilibili\.com\/fgo/, /live\.bilibili\.com\/p\/html\/live-app-hotrank\//],
}) })