mirror of
https://github.com/smallmain/cocos-enhance-kit.git
synced 2025-12-09 18:28:44 +00:00
[adapters] 增加小游戏适配部分源码
This commit is contained in:
185
adapters/platforms/baidu/wrapper/builtin/document.js
Normal file
185
adapters/platforms/baidu/wrapper/builtin/document.js
Normal file
@@ -0,0 +1,185 @@
|
||||
/* eslint-disable */
|
||||
import * as window from './window'
|
||||
import Event from './Event'
|
||||
import HTMLElement from './HTMLElement'
|
||||
import HTMLVideoElement from './HTMLVideoElement'
|
||||
import Image from './Image'
|
||||
import Audio from './Audio'
|
||||
import Canvas from './Canvas'
|
||||
import DocumentElement from './DocumentElement'
|
||||
import Body from './Body'
|
||||
import './EventIniter/index.js'
|
||||
import location from './location';
|
||||
|
||||
const events = {}
|
||||
|
||||
const document = {
|
||||
readyState: 'complete',
|
||||
visibilityState: 'visible', // 'visible' , 'hidden'
|
||||
hidden: false,
|
||||
fullscreen: true,
|
||||
|
||||
URL: location.href,
|
||||
|
||||
location: window.location,
|
||||
|
||||
scripts: [],
|
||||
style: {},
|
||||
|
||||
ontouchstart: null,
|
||||
ontouchmove: null,
|
||||
ontouchend: null,
|
||||
onvisibilitychange: null,
|
||||
|
||||
parentNode: null,
|
||||
parentElement: null,
|
||||
|
||||
createElement(tagName) {
|
||||
tagName = tagName.toLowerCase();
|
||||
if (tagName === 'canvas') {
|
||||
return new Canvas()
|
||||
} else if (tagName === 'audio') {
|
||||
return new Audio()
|
||||
} else if (tagName === 'img') {
|
||||
return new Image()
|
||||
} else if (tagName === 'video') {
|
||||
return new HTMLVideoElement()
|
||||
}
|
||||
|
||||
return new HTMLElement(tagName)
|
||||
},
|
||||
|
||||
createElementNS(nameSpace, tagName) {
|
||||
return this.createElement(tagName);
|
||||
},
|
||||
|
||||
createTextNode(text) {
|
||||
// TODO: Do we need the TextNode Class ???
|
||||
return text;
|
||||
},
|
||||
|
||||
getElementById(id) {
|
||||
if (id === window.canvas.id) {
|
||||
return window.canvas
|
||||
}
|
||||
return null
|
||||
},
|
||||
|
||||
getElementsByTagName(tagName) {
|
||||
tagName = tagName.toLowerCase();
|
||||
if (tagName === 'head') {
|
||||
return [document.head]
|
||||
} else if (tagName === 'body') {
|
||||
return [document.body]
|
||||
} else if (tagName === 'canvas') {
|
||||
return [window.canvas]
|
||||
}
|
||||
return []
|
||||
},
|
||||
|
||||
getElementsByTagNameNS(nameSpace, tagName) {
|
||||
return this.getElementsByTagName(tagName);
|
||||
},
|
||||
|
||||
getElementsByName(tagName) {
|
||||
if (tagName === 'head') {
|
||||
return [document.head]
|
||||
} else if (tagName === 'body') {
|
||||
return [document.body]
|
||||
} else if (tagName === 'canvas') {
|
||||
return [window.canvas]
|
||||
}
|
||||
return []
|
||||
},
|
||||
|
||||
querySelector(query) {
|
||||
if (query === 'head') {
|
||||
return document.head
|
||||
} else if (query === 'body') {
|
||||
return document.body
|
||||
} else if (query === 'canvas') {
|
||||
return window.canvas
|
||||
} else if (query === `#${window.canvas.id}`) {
|
||||
return window.canvas
|
||||
}
|
||||
return null
|
||||
},
|
||||
|
||||
querySelectorAll(query) {
|
||||
if (query === 'head') {
|
||||
return [document.head]
|
||||
} else if (query === 'body') {
|
||||
return [document.body]
|
||||
} else if (query === 'canvas') {
|
||||
return [window.canvas]
|
||||
}
|
||||
return []
|
||||
},
|
||||
|
||||
addEventListener(type, listener) {
|
||||
if (!events[type]) {
|
||||
events[type] = []
|
||||
}
|
||||
events[type].push(listener)
|
||||
},
|
||||
|
||||
removeEventListener(type, listener) {
|
||||
const listeners = events[type]
|
||||
|
||||
if (listeners && listeners.length > 0) {
|
||||
for (let i = listeners.length; i--; i > 0) {
|
||||
if (listeners[i] === listener) {
|
||||
listeners.splice(i, 1)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
dispatchEvent(event) {
|
||||
const type = event.type;
|
||||
const listeners = events[type]
|
||||
|
||||
if (listeners) {
|
||||
for (let i = 0; i < listeners.length; i++) {
|
||||
listeners[i](event)
|
||||
}
|
||||
}
|
||||
|
||||
if (event.target && typeof event.target['on' + type] === 'function') {
|
||||
event.target['on' + type](event)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
document.documentElement = new DocumentElement()
|
||||
document.head = new HTMLElement('head')
|
||||
document.body = new Body()
|
||||
|
||||
function onVisibilityChange(visible) {
|
||||
|
||||
return function() {
|
||||
|
||||
document.visibilityState = visible ? 'visible' : 'hidden';
|
||||
|
||||
const hidden = !visible;
|
||||
if (document.hidden === hidden) {
|
||||
return;
|
||||
}
|
||||
document.hidden = hidden;
|
||||
|
||||
const event = new Event('visibilitychange');
|
||||
|
||||
event.target = document;
|
||||
event.timeStamp = Date.now();
|
||||
|
||||
document.dispatchEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
if (swan.onHide) {
|
||||
swan.onHide(onVisibilityChange(false));
|
||||
swan.onShow(onVisibilityChange(true));
|
||||
}
|
||||
|
||||
export default document
|
||||
Reference in New Issue
Block a user