superman
1 year ago
3 changed files with 12 additions and 98 deletions
@ -1,96 +0,0 @@
|
||||
/** |
||||
* 用于 jquery 在 worker 环境或者 V8 引擎的 polyfill |
||||
*/ |
||||
// import { _global } from "@/core/0.foundation";
|
||||
|
||||
const _global = globalThis; |
||||
|
||||
const document = {}; |
||||
const fakeElement = Object.create(document); |
||||
|
||||
Object.assign(document, { |
||||
parentNode: null, |
||||
nodeType: 9, |
||||
head: fakeElement, |
||||
body: fakeElement, |
||||
ownerDocument: document, |
||||
documentElement: document, |
||||
toString() { |
||||
return "FakeDocument"; |
||||
}, |
||||
appendChild(child) { |
||||
return child; |
||||
}, |
||||
implementation: { |
||||
createHTMLDocument() { |
||||
return { |
||||
body: { |
||||
childNodes: [], |
||||
}, |
||||
}; |
||||
}, |
||||
createDocumentFragment() { |
||||
return this; |
||||
}, |
||||
}, |
||||
getElementById() { |
||||
return fakeElement; |
||||
}, |
||||
createElement() { |
||||
return fakeElement; |
||||
}, |
||||
createDocumentFragment() { |
||||
return this; |
||||
}, |
||||
cloneNode() { |
||||
return this; |
||||
}, |
||||
getElementsByTagName() { |
||||
return [fakeElement]; |
||||
}, |
||||
getElementsByClassName() { |
||||
return [fakeElement]; |
||||
}, |
||||
setAttribute() { |
||||
return null; |
||||
}, |
||||
getAttribute() { |
||||
return null; |
||||
}, |
||||
removeChild() { |
||||
return null; |
||||
}, |
||||
addEventListener() { |
||||
return null; |
||||
}, |
||||
removeEventListener() { |
||||
return null; |
||||
}, |
||||
}); |
||||
|
||||
Object.assign(fakeElement, { |
||||
nodeType: 1, |
||||
style: {}, |
||||
ownerDocument: document, |
||||
parentNod: fakeElement, |
||||
firstChild: fakeElement, |
||||
lastChild: fakeElement, |
||||
toString() { |
||||
return "FakeElement"; |
||||
}, |
||||
}); |
||||
|
||||
function polyfillProps(key, obj) { |
||||
_global[key] = _global[key] || obj; |
||||
if (typeof obj === "object") { |
||||
try { |
||||
Object.assign(_global[key], obj); |
||||
} catch(err) { |
||||
// _global[key] 可能只有 get 方法
|
||||
} |
||||
} |
||||
} |
||||
|
||||
_global.window = _global; |
||||
polyfillProps("XMLHttpRequest", function () {}); |
||||
polyfillProps("document", document); |
Loading…
Reference in new issue