From 51e3f768f51709a21323a0f83260659abff537ad Mon Sep 17 00:00:00 2001 From: cat-orange <45775783+cat-orange@users.noreply.github.com> Date: Fri, 26 Jul 2024 16:32:41 +0800 Subject: [PATCH] Update replacements.js-substitute MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit about function substitute when (content.opf > manifest > item > href) is an encode-uri: '%E4%B8%AD%E6%96%87' but the content's source is not: '中文' need decode to substitute blob successfully --- src/utils/replacements.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/utils/replacements.js b/src/utils/replacements.js index a271088..2e02c51 100644 --- a/src/utils/replacements.js +++ b/src/utils/replacements.js @@ -128,6 +128,13 @@ export function replaceLinks(contents, fn) { export function substitute(content, urls, replacements) { urls.forEach(function(url, i){ if (url && replacements[i]) { + // when (content.opf > manifest > item > href) is a encodeURI, but the content's source is not + try { + let decodeUri = window.decodeURIComponent(url); + content = content.replace(new RegExp(decodeUri, "g"), replacements[i]); + } catch (err) { + throw err + } // Account for special characters in the file name. // See https://stackoverflow.com/a/6318729. url = url.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");