mirror of
https://github.com/pysunday/sdenv.git
synced 2025-04-12 03:37:16 +08:00
feat: 1. 去除单例创建实例方式;2. 增加Event、XPathException、prompt的检测处理;3. 其它代码优化
This commit is contained in:
parent
49a4a2bb45
commit
d5e9ec46d4
@ -1,4 +1,4 @@
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
module.exports = (sdenv) => {
|
||||
const window = sdenv.memory.sdWindow;
|
||||
|
||||
function RTCPeerConnection() {
|
||||
@ -17,3 +17,4 @@ sdenv.tools.setNativeObjName(RTCPeerConnection.prototype, 'RTCPeerConnection');
|
||||
|
||||
|
||||
window.RTCPeerConnection = RTCPeerConnection;
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
|
||||
module.exports = (sdenv) => {
|
||||
sdenv.memory.sdWindow.chrome = {
|
||||
app: {
|
||||
isInstalled: false,
|
||||
@ -37,3 +36,4 @@ sdenv.memory.sdWindow.chrome = {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
const logger = require('@utils/logger');
|
||||
const utils = require('sdenv-jsdom/lib/jsdom/living/generated/utils.js');
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
const window = sdenv.memory.sdWindow;
|
||||
|
||||
module.exports = (sdenv) => {
|
||||
const window = sdenv.memory.sdWindow;
|
||||
const ctorRegistry = window[utils.ctorRegistrySymbol]
|
||||
window[utils.ctorRegistrySymbol] = new window.Proxy(ctorRegistry, {
|
||||
get(target, propKey, receiver) {
|
||||
@ -10,3 +10,4 @@ window[utils.ctorRegistrySymbol] = new window.Proxy(ctorRegistry, {
|
||||
return window.Reflect.get(target, propKey, receiver);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
const utils = require('sdenv-jsdom/lib/jsdom/living/generated/utils.js');
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
module.exports = (sdenv) => {
|
||||
const document = sdenv.memory.sdWindow.document;
|
||||
|
||||
const getElementsByTagNameOri = document.getElementsByTagName;
|
||||
document.getElementsByTagName = (...params) => {
|
||||
var findArr = getElementsByTagNameOri.apply(document, params);
|
||||
@ -14,3 +13,4 @@ document.getElementsByTagName = (...params) => {
|
||||
}
|
||||
return findArr;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
const getDocumentAll = require('@/build/Release/documentAll').getDocumentAll;
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
module.exports = (sdenv) => {
|
||||
const window = sdenv.memory.sdWindow;
|
||||
|
||||
window.document.all = getDocumentAll({ length: 3 });
|
||||
}
|
||||
|
@ -1,13 +1,15 @@
|
||||
require('./window');
|
||||
require('./document');
|
||||
require('./navigation');
|
||||
require('./navigator');
|
||||
require('./chrome');
|
||||
require('./visualViewport');
|
||||
require('./styleMedia');
|
||||
// require('./webkitRequestFileSystem');
|
||||
require('./ctorRegistry');
|
||||
require('./location');
|
||||
require('./indexedDB');
|
||||
require('./RTCPeerConnection');
|
||||
require('./document-element');
|
||||
module.exports = (sdenv) => {
|
||||
require('./window')(sdenv);
|
||||
require('./document')(sdenv);
|
||||
require('./navigation')(sdenv);
|
||||
require('./navigator')(sdenv);
|
||||
require('./chrome')(sdenv);
|
||||
require('./visualViewport')(sdenv);
|
||||
require('./styleMedia')(sdenv);
|
||||
require('./webkitRequestFileSystem')(sdenv);
|
||||
require('./ctorRegistry')(sdenv);
|
||||
require('./location')(sdenv);
|
||||
require('./indexedDB')(sdenv);
|
||||
require('./RTCPeerConnection')(sdenv);
|
||||
require('./document-element')(sdenv);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
module.exports = (sdenv) => {
|
||||
const window = sdenv.memory.sdWindow;
|
||||
|
||||
const IDBFactory = function IDBFactory() {
|
||||
@ -14,3 +14,4 @@ sdenv.tools.setNativeObjName(indexedDB, 'IDBFactory');
|
||||
|
||||
window.IDBFactory = IDBFactory;
|
||||
window.indexedDB = indexedDB;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
module.exports = (sdenv) => {
|
||||
const window = sdenv.memory.sdWindow;
|
||||
|
||||
Object.defineProperty(window.location, 'replace', {
|
||||
@ -8,3 +8,4 @@ Object.defineProperty(window.location, 'replace', {
|
||||
sdenv.tools.exit({ url });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
module.exports = (sdenv) => {
|
||||
const window = sdenv.memory.sdWindow;
|
||||
|
||||
[window.Navigation, window.navigation] = sdenv.tools.getNativeProto('Navigation', 'navigation', {
|
||||
@ -18,3 +18,4 @@ const window = sdenv.memory.sdWindow;
|
||||
url: 'http://example.com',
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
module.exports = (sdenv) => {
|
||||
const window = sdenv.memory.sdWindow;
|
||||
|
||||
const DeprecatedStorageQuota = function DeprecatedStorageQuota() {
|
||||
@ -46,3 +46,4 @@ sdenv.tools.mixin(window.navigator, NavigatorCustomize.prototype, ['userAgent',
|
||||
Object.keys(window.navigator.__proto__).forEach(name => {
|
||||
sdenv.tools.setFuncNative(Object.getOwnPropertyDescriptor(window.navigator.__proto__, name)?.get, 'get');
|
||||
})
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
module.exports = (sdenv) => {
|
||||
const window = sdenv.memory.sdWindow;
|
||||
|
||||
window.styleMedia = sdenv.tools.getNativeProto('StyleMedia', 'styleMedia', {
|
||||
type: 'screen'
|
||||
})[1];
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
module.exports = (sdenv) => {
|
||||
const window = sdenv.memory.sdWindow;
|
||||
|
||||
[window.VisualViewport, window.visualViewport] = sdenv.tools.getNativeProto('VisualViewport', 'visualViewport', {
|
||||
@ -12,3 +12,4 @@ const window = sdenv.memory.sdWindow;
|
||||
scale: 1,
|
||||
width: 1066,
|
||||
});
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
module.exports = (sdenv) => {
|
||||
const window = sdenv.memory.sdWindow;
|
||||
|
||||
const webkitRequestFileSystem = function webkitRequestFileSystem(type, size, successCallback, errorCallback) {
|
||||
@ -8,3 +8,4 @@ const webkitRequestFileSystem = function webkitRequestFileSystem(type, size, suc
|
||||
};
|
||||
sdenv.tools.setNativeFuncName(webkitRequestFileSystem, 'webkitRequestFileSystem')
|
||||
window.webkitRequestFileSystem = webkitRequestFileSystem;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
const logger = require('@utils/logger');
|
||||
const sdenv = require('sdenv-extend').sdenv();
|
||||
module.exports = (sdenv) => {
|
||||
const window = sdenv.memory.sdWindow;
|
||||
|
||||
window.fetch = function fetch() {};
|
||||
@ -13,4 +13,13 @@ window.isSecureContext = false;
|
||||
window.open = function(url) {
|
||||
sdenv.tools.exit({ url });
|
||||
}
|
||||
// window.console = logger;
|
||||
sdenv.tools.setFuncNative(window.Event, 'Event');
|
||||
delete window.XPathException;
|
||||
sdenv.tools.setFuncNative(window.prompt, 'prompt');
|
||||
// Object.assign(window, {
|
||||
// innerWidth: 326,
|
||||
// innerHeight: 992,
|
||||
// outerWidth: 1728,
|
||||
// outerHeight: 1079,
|
||||
// });
|
||||
}
|
||||
|
@ -6,11 +6,7 @@ require('module-alias')(path.dirname(paths.package));
|
||||
const SdenvExtend = require('sdenv-extend');
|
||||
|
||||
module.exports = (win, type = 'chrome') => {
|
||||
new SdenvExtend({
|
||||
memory: {
|
||||
SdenvExtend,
|
||||
}
|
||||
}, win);
|
||||
require(`@/browser/${type}`);
|
||||
return new SdenvExtend();
|
||||
win.sdenv = new SdenvExtend({ }, win);
|
||||
require(`@/browser/${type}`)(win.sdenv);
|
||||
return win.sdenv;
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ function initBrowser(window, cookieJar) {
|
||||
window.onbeforeunload = async (url) => {
|
||||
const cookies = cookieJar.getCookieStringSync(baseUrl);
|
||||
logger.debug('生成cookie:', cookies);
|
||||
process.exit();
|
||||
window.close();
|
||||
}
|
||||
browser(window, 'chrome');
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ async function loadPages() {
|
||||
if (cookies) {
|
||||
logger.debug('cookieJar:', cookies);
|
||||
}
|
||||
process.exit();
|
||||
dom.window.close();
|
||||
}
|
||||
}
|
||||
loadPages()
|
||||
|
@ -5,7 +5,20 @@ const { jsdomFromUrl } = require('../../utils/jsdom');
|
||||
|
||||
const baseUrl = "https://wcjs.sbj.cnipa.gov.cn"
|
||||
|
||||
async function loadPages() {
|
||||
async function loadPagesSecond(cookieJar) {
|
||||
const [jsdomer, ..._] = jsdomFromUrl({
|
||||
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',
|
||||
}, cookieJar);
|
||||
const dom = await jsdomer(`${baseUrl}/sgtmi`);
|
||||
if (dom.window.document.title === '商标网上检索') {
|
||||
logger.info(`cookie验证通过,存在document.title,且值为:${dom.window.document.title}`);
|
||||
} else {
|
||||
logger.error('cookie验证不通过!');
|
||||
}
|
||||
dom.window.close();
|
||||
}
|
||||
|
||||
async function loadPagesFirst() {
|
||||
const [jsdomer, cookieJar] = jsdomFromUrl({
|
||||
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',
|
||||
});
|
||||
@ -14,9 +27,10 @@ async function loadPages() {
|
||||
window.onbeforeunload = async (url) => {
|
||||
const cookies = cookieJar.getCookieStringSync(baseUrl);
|
||||
logger.debug('生成cookie:', cookies);
|
||||
process.exit();
|
||||
await loadPagesSecond(cookieJar)
|
||||
window.close();
|
||||
}
|
||||
browser(window, 'chrome');
|
||||
}
|
||||
|
||||
loadPages()
|
||||
loadPagesFirst()
|
||||
|
@ -2,7 +2,6 @@
|
||||
"name": "sdenv",
|
||||
"version": "0.1.8",
|
||||
"description": "补环境框架",
|
||||
"main": "main.js",
|
||||
"directories": {
|
||||
"test": "test"
|
||||
},
|
||||
@ -13,6 +12,12 @@
|
||||
"release": "release-it"
|
||||
},
|
||||
"logLevel": "debug",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/pysunday/sdenv"
|
||||
},
|
||||
"homepage": "https://github.com/pysunday/sdenv#readme",
|
||||
"bugs": "https://github.com/pysunday/sdenv/issues",
|
||||
"author": "pysunday",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
@ -23,7 +28,7 @@
|
||||
"log4js": "^6.9.1",
|
||||
"module-alias": "^2.2.3",
|
||||
"node-addon-api": "^7.0.0",
|
||||
"sdenv-extend": "^1.2.0",
|
||||
"sdenv-extend": "^1.3.0",
|
||||
"sdenv-jsdom": "^1.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
@ -2,7 +2,7 @@ const jsdom = require('sdenv-jsdom');
|
||||
const logger = require('./logger');
|
||||
const { JSDOM, CookieJar } = jsdom;
|
||||
|
||||
exports.jsdomFromUrl = (config, ua) => {
|
||||
exports.jsdomFromUrl = (config, cookieJar) => {
|
||||
const resourceLoader = new jsdom.ResourceLoader({
|
||||
strictSSL: false,
|
||||
...config,
|
||||
@ -13,7 +13,7 @@ exports.jsdomFromUrl = (config, ua) => {
|
||||
warn: logger.warn.bind(logger),
|
||||
error: logger.error.bind(logger),
|
||||
});
|
||||
const cookieJar = new CookieJar()
|
||||
if (!cookieJar) cookieJar = new CookieJar();
|
||||
const options = {
|
||||
pretendToBeVisual: true,
|
||||
runScripts: "dangerously",
|
||||
|
Loading…
x
Reference in New Issue
Block a user