From c3d5c920234db98d70cf9d6aac844f23db462794 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=A0=E6=89=8B=E6=8D=A7=E9=B2=9C=E8=8A=B1?= <157215725@qq.com> Date: Sat, 15 Apr 2023 10:59:53 +0800 Subject: [PATCH] fix: `getDefaultStyle` nodeName not being converted to lower case --- src/copy-css-styles.ts | 3 ++- src/copy-pseudo-class.ts | 3 ++- src/get-default-style.ts | 7 ++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/copy-css-styles.ts b/src/copy-css-styles.ts index 932d8b7..5a8cfd3 100644 --- a/src/copy-css-styles.ts +++ b/src/copy-css-styles.ts @@ -7,6 +7,7 @@ const ignoredStyle = [ 'all', // svg: all 'd', // svg: d 'content', // Safari shows pseudoelements if content is set + '-webkit-text-fill-color', ] export function copyCssStyles( @@ -17,7 +18,7 @@ export function copyCssStyles( context: Context, ) { const cloneStyle = clone.style - const defaultStyle = getDefaultStyle(node.tagName, null, context) + const defaultStyle = getDefaultStyle(node.nodeName, null, context) cloneStyle.transitionProperty = 'none' diff --git a/src/copy-pseudo-class.ts b/src/copy-pseudo-class.ts index 76d6e13..44a34f5 100644 --- a/src/copy-pseudo-class.ts +++ b/src/copy-pseudo-class.ts @@ -5,6 +5,7 @@ import type { Context } from './context' const ignoredStyles = [ 'content', '-webkit-locale', + '-webkit-text-fill-color', ] const pseudoClasses = [ @@ -40,7 +41,7 @@ export function copyPseudoClass( const content = style.getPropertyValue('content') if (!content || content === 'none') return const klasses = [uuid()] - const defaultStyle = getDefaultStyle('DIV', pseudoClass, context) + const defaultStyle = getDefaultStyle(node.nodeName, pseudoClass, context) const cloneStyle = [ `content: '${ content.replace(/'|"/g, '') }';`, ] diff --git a/src/get-default-style.ts b/src/get-default-style.ts index 86beb68..4790abe 100644 --- a/src/get-default-style.ts +++ b/src/get-default-style.ts @@ -1,9 +1,10 @@ import { uuid } from './utils' import type { Context } from './context' -export function getDefaultStyle(tagName: string, pseudoElement: string | null, context: Context) { +export function getDefaultStyle(nodeName: string, pseudoElement: string | null, context: Context) { + nodeName = nodeName.toLowerCase() const { defaultComputedStyles, ownerDocument } = context - const key = `${ tagName }${ pseudoElement ?? '' }` + const key = `${ nodeName }${ pseudoElement ?? '' }` if (defaultComputedStyles.has(key)) return defaultComputedStyles.get(key)! let sandbox = context.sandbox if (!sandbox) { @@ -23,7 +24,7 @@ export function getDefaultStyle(tagName: string, pseudoElement: string | null, c const sandboxWindow = sandbox.contentWindow if (!sandboxWindow) return {} const sandboxDocument = sandboxWindow.document - const el = sandboxDocument.createElement(tagName) + const el = sandboxDocument.createElement(nodeName) sandboxDocument.body.appendChild(el) // Ensure that there is some content, so properties like margin are applied el.textContent = ' '