✨ filter inexecutable script for dynamic import scenario (#2011)
This commit is contained in:
parent
6d886341e4
commit
82f29a8604
|
|
@ -19,6 +19,15 @@ const SCRIPT_TAG_NAME = 'SCRIPT';
|
||||||
const LINK_TAG_NAME = 'LINK';
|
const LINK_TAG_NAME = 'LINK';
|
||||||
const STYLE_TAG_NAME = 'STYLE';
|
const STYLE_TAG_NAME = 'STYLE';
|
||||||
|
|
||||||
|
export function isExecutableScriptType(script: HTMLScriptElement) {
|
||||||
|
return (
|
||||||
|
!script.type ||
|
||||||
|
['text/javascript', 'module', 'application/javascript', 'text/ecmascript', 'application/ecmascript'].indexOf(
|
||||||
|
script.type,
|
||||||
|
) !== -1
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export function isHijackingTag(tagName?: string) {
|
export function isHijackingTag(tagName?: string) {
|
||||||
return (
|
return (
|
||||||
tagName?.toUpperCase() === LINK_TAG_NAME ||
|
tagName?.toUpperCase() === LINK_TAG_NAME ||
|
||||||
|
|
@ -206,7 +215,7 @@ function getOverwrittenAppendChildOrInsertBefore(opts: {
|
||||||
case SCRIPT_TAG_NAME: {
|
case SCRIPT_TAG_NAME: {
|
||||||
const { src, text } = element as HTMLScriptElement;
|
const { src, text } = element as HTMLScriptElement;
|
||||||
// some script like jsonp maybe not support cors which should't use execScripts
|
// some script like jsonp maybe not support cors which should't use execScripts
|
||||||
if (excludeAssetFilter && src && excludeAssetFilter(src)) {
|
if ((excludeAssetFilter && src && excludeAssetFilter(src)) || !isExecutableScriptType(element)) {
|
||||||
return rawDOMAppendOrInsertBefore.call(this, element, refChild) as T;
|
return rawDOMAppendOrInsertBefore.call(this, element, refChild) as T;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user