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,19 +1,20 @@
|
|||||||
const sdenv = require('sdenv-extend').sdenv();
|
module.exports = (sdenv) => {
|
||||||
const window = sdenv.memory.sdWindow;
|
const window = sdenv.memory.sdWindow;
|
||||||
|
|
||||||
function RTCPeerConnection() {
|
function RTCPeerConnection() {
|
||||||
if (!(this instanceof RTCPeerConnection)) {
|
if (!(this instanceof RTCPeerConnection)) {
|
||||||
throw new TypeError("Uncaught TypeError: Failed to construct 'RTCPeerConnection': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
|
throw new TypeError("Uncaught TypeError: Failed to construct 'RTCPeerConnection': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
|
||||||
}
|
}
|
||||||
this.createDataChannel = function(...params) {
|
this.createDataChannel = function(...params) {
|
||||||
// window.console.log(`【RTCPeerConnection RTCPeerConnection】调用,参数:${params}`)
|
// window.console.log(`【RTCPeerConnection RTCPeerConnection】调用,参数:${params}`)
|
||||||
}
|
}
|
||||||
this.createOffer = function(...params) {
|
this.createOffer = function(...params) {
|
||||||
// window.console.log(`【RTCPeerConnection createOffer】调用,参数:${params}`)
|
// window.console.log(`【RTCPeerConnection createOffer】调用,参数:${params}`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
sdenv.tools.setNativeFuncName(RTCPeerConnection, 'RTCPeerConnection');
|
||||||
|
sdenv.tools.setNativeObjName(RTCPeerConnection.prototype, 'RTCPeerConnection');
|
||||||
|
|
||||||
|
|
||||||
|
window.RTCPeerConnection = RTCPeerConnection;
|
||||||
}
|
}
|
||||||
sdenv.tools.setNativeFuncName(RTCPeerConnection, 'RTCPeerConnection');
|
|
||||||
sdenv.tools.setNativeObjName(RTCPeerConnection.prototype, 'RTCPeerConnection');
|
|
||||||
|
|
||||||
|
|
||||||
window.RTCPeerConnection = RTCPeerConnection;
|
|
||||||
|
@ -1,39 +1,39 @@
|
|||||||
const sdenv = require('sdenv-extend').sdenv();
|
module.exports = (sdenv) => {
|
||||||
|
sdenv.memory.sdWindow.chrome = {
|
||||||
sdenv.memory.sdWindow.chrome = {
|
app: {
|
||||||
app: {
|
isInstalled: false,
|
||||||
isInstalled: false,
|
InstallState: {
|
||||||
InstallState: {
|
DISABLED: "disabled",
|
||||||
DISABLED: "disabled",
|
INSTALLED: "installed",
|
||||||
INSTALLED: "installed",
|
NOT_INSTALLED: "not_installed",
|
||||||
NOT_INSTALLED: "not_installed",
|
},
|
||||||
|
RunningState: {
|
||||||
|
CANNOT_RUN: "cannot_run",
|
||||||
|
READY_TO_RUN: "ready_to_run",
|
||||||
|
RUNNING: "running",
|
||||||
|
},
|
||||||
|
getDetails: function () {},
|
||||||
|
getIsInstalled: function() {},
|
||||||
|
installState: function() {},
|
||||||
|
runningState: function() {},
|
||||||
},
|
},
|
||||||
RunningState: {
|
csi: function() {},
|
||||||
CANNOT_RUN: "cannot_run",
|
loadTimes: function() {
|
||||||
READY_TO_RUN: "ready_to_run",
|
return {
|
||||||
RUNNING: "running",
|
"requestTime": 1700779741.985,
|
||||||
},
|
"startLoadTime": 1700779741.985,
|
||||||
getDetails: function () {},
|
"commitLoadTime": 1700779742.021,
|
||||||
getIsInstalled: function() {},
|
"finishDocumentLoadTime": 0,
|
||||||
installState: function() {},
|
"finishLoadTime": 0,
|
||||||
runningState: function() {},
|
"firstPaintTime": 0,
|
||||||
},
|
"firstPaintAfterLoadTime": 0,
|
||||||
csi: function() {},
|
"navigationType": "Reload",
|
||||||
loadTimes: function() {
|
"wasFetchedViaSpdy": false,
|
||||||
return {
|
"wasNpnNegotiated": true,
|
||||||
"requestTime": 1700779741.985,
|
"npnNegotiatedProtocol": "http/1.1",
|
||||||
"startLoadTime": 1700779741.985,
|
"wasAlternateProtocolAvailable": false,
|
||||||
"commitLoadTime": 1700779742.021,
|
"connectionInfo": "http/1.1"
|
||||||
"finishDocumentLoadTime": 0,
|
}
|
||||||
"finishLoadTime": 0,
|
|
||||||
"firstPaintTime": 0,
|
|
||||||
"firstPaintAfterLoadTime": 0,
|
|
||||||
"navigationType": "Reload",
|
|
||||||
"wasFetchedViaSpdy": false,
|
|
||||||
"wasNpnNegotiated": true,
|
|
||||||
"npnNegotiatedProtocol": "http/1.1",
|
|
||||||
"wasAlternateProtocolAvailable": false,
|
|
||||||
"connectionInfo": "http/1.1"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
const logger = require('@utils/logger');
|
const logger = require('@utils/logger');
|
||||||
const utils = require('sdenv-jsdom/lib/jsdom/living/generated/utils.js');
|
const utils = require('sdenv-jsdom/lib/jsdom/living/generated/utils.js');
|
||||||
const sdenv = require('sdenv-extend').sdenv();
|
|
||||||
const window = sdenv.memory.sdWindow;
|
|
||||||
|
|
||||||
const ctorRegistry = window[utils.ctorRegistrySymbol]
|
module.exports = (sdenv) => {
|
||||||
window[utils.ctorRegistrySymbol] = new window.Proxy(ctorRegistry, {
|
const window = sdenv.memory.sdWindow;
|
||||||
get(target, propKey, receiver) {
|
const ctorRegistry = window[utils.ctorRegistrySymbol]
|
||||||
logger.trace('proxy ctorRegistry get', propKey);
|
window[utils.ctorRegistrySymbol] = new window.Proxy(ctorRegistry, {
|
||||||
return window.Reflect.get(target, propKey, receiver);
|
get(target, propKey, receiver) {
|
||||||
}
|
logger.trace('proxy ctorRegistry get', propKey);
|
||||||
})
|
return window.Reflect.get(target, propKey, receiver);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
const utils = require('sdenv-jsdom/lib/jsdom/living/generated/utils.js');
|
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 document = sdenv.memory.sdWindow.document;
|
||||||
|
const getElementsByTagNameOri = document.getElementsByTagName;
|
||||||
const getElementsByTagNameOri = document.getElementsByTagName;
|
document.getElementsByTagName = (...params) => {
|
||||||
document.getElementsByTagName = (...params) => {
|
var findArr = getElementsByTagNameOri.apply(document, params);
|
||||||
var findArr = getElementsByTagNameOri.apply(document, params);
|
if (params[0] === 'script' && document.readyState === 'loading' && document[utils.implSymbol]._currentScript) {
|
||||||
if (params[0] === 'script' && document.readyState === 'loading' && document[utils.implSymbol]._currentScript) {
|
// dom动态解析的临时解决方案,看后续是否会产生其它问题
|
||||||
// dom动态解析的临时解决方案,看后续是否会产生其它问题
|
const findIdx = [...findArr].indexOf(document[utils.implSymbol]._currentScript[utils.wrapperSymbol]);
|
||||||
const findIdx = [...findArr].indexOf(document[utils.implSymbol]._currentScript[utils.wrapperSymbol]);
|
if (findIdx > -1) {
|
||||||
if (findIdx > -1) {
|
return [...findArr].slice(0, findIdx + 1);
|
||||||
return [...findArr].slice(0, findIdx + 1);
|
}
|
||||||
}
|
}
|
||||||
|
return findArr;
|
||||||
}
|
}
|
||||||
return findArr;
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
const getDocumentAll = require('@/build/Release/documentAll').getDocumentAll;
|
const getDocumentAll = require('@/build/Release/documentAll').getDocumentAll;
|
||||||
const sdenv = require('sdenv-extend').sdenv();
|
module.exports = (sdenv) => {
|
||||||
const window = sdenv.memory.sdWindow;
|
const window = sdenv.memory.sdWindow;
|
||||||
|
|
||||||
window.document.all = getDocumentAll({ length: 3 });
|
window.document.all = getDocumentAll({ length: 3 });
|
||||||
|
}
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
require('./window');
|
module.exports = (sdenv) => {
|
||||||
require('./document');
|
require('./window')(sdenv);
|
||||||
require('./navigation');
|
require('./document')(sdenv);
|
||||||
require('./navigator');
|
require('./navigation')(sdenv);
|
||||||
require('./chrome');
|
require('./navigator')(sdenv);
|
||||||
require('./visualViewport');
|
require('./chrome')(sdenv);
|
||||||
require('./styleMedia');
|
require('./visualViewport')(sdenv);
|
||||||
// require('./webkitRequestFileSystem');
|
require('./styleMedia')(sdenv);
|
||||||
require('./ctorRegistry');
|
require('./webkitRequestFileSystem')(sdenv);
|
||||||
require('./location');
|
require('./ctorRegistry')(sdenv);
|
||||||
require('./indexedDB');
|
require('./location')(sdenv);
|
||||||
require('./RTCPeerConnection');
|
require('./indexedDB')(sdenv);
|
||||||
require('./document-element');
|
require('./RTCPeerConnection')(sdenv);
|
||||||
|
require('./document-element')(sdenv);
|
||||||
|
}
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
const sdenv = require('sdenv-extend').sdenv();
|
module.exports = (sdenv) => {
|
||||||
const window = sdenv.memory.sdWindow;
|
const window = sdenv.memory.sdWindow;
|
||||||
|
|
||||||
const IDBFactory = function IDBFactory() {
|
const IDBFactory = function IDBFactory() {
|
||||||
throw new TypeError("Illegal constructor");
|
throw new TypeError("Illegal constructor");
|
||||||
|
}
|
||||||
|
|
||||||
|
const indexedDB = {
|
||||||
|
__proto__: IDBFactory.prototype
|
||||||
|
};
|
||||||
|
|
||||||
|
sdenv.tools.setNativeFuncName(IDBFactory, 'IDBFactory');
|
||||||
|
sdenv.tools.setNativeObjName(indexedDB, 'IDBFactory');
|
||||||
|
|
||||||
|
window.IDBFactory = IDBFactory;
|
||||||
|
window.indexedDB = indexedDB;
|
||||||
}
|
}
|
||||||
|
|
||||||
const indexedDB = {
|
|
||||||
__proto__: IDBFactory.prototype
|
|
||||||
};
|
|
||||||
|
|
||||||
sdenv.tools.setNativeFuncName(IDBFactory, 'IDBFactory');
|
|
||||||
sdenv.tools.setNativeObjName(indexedDB, 'IDBFactory');
|
|
||||||
|
|
||||||
window.IDBFactory = IDBFactory;
|
|
||||||
window.indexedDB = indexedDB;
|
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
const sdenv = require('sdenv-extend').sdenv();
|
module.exports = (sdenv) => {
|
||||||
const window = sdenv.memory.sdWindow;
|
const window = sdenv.memory.sdWindow;
|
||||||
|
|
||||||
Object.defineProperty(window.location, 'replace', {
|
Object.defineProperty(window.location, 'replace', {
|
||||||
...Object.getOwnPropertyDescriptor(window.location, 'replace'),
|
...Object.getOwnPropertyDescriptor(window.location, 'replace'),
|
||||||
writable: false,
|
writable: false,
|
||||||
value: function(url) {
|
value: function(url) {
|
||||||
sdenv.tools.exit({ url });
|
sdenv.tools.exit({ url });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
@ -1,20 +1,21 @@
|
|||||||
const sdenv = require('sdenv-extend').sdenv();
|
module.exports = (sdenv) => {
|
||||||
const window = sdenv.memory.sdWindow;
|
const window = sdenv.memory.sdWindow;
|
||||||
|
|
||||||
[window.Navigation, window.navigation] = sdenv.tools.getNativeProto('Navigation', 'navigation', {
|
[window.Navigation, window.navigation] = sdenv.tools.getNativeProto('Navigation', 'navigation', {
|
||||||
canGoBack: false,
|
canGoBack: false,
|
||||||
canGoForward: false,
|
canGoForward: false,
|
||||||
oncurrententrychange: null,
|
oncurrententrychange: null,
|
||||||
onnavigate: null,
|
onnavigate: null,
|
||||||
onnavigateerror: null,
|
onnavigateerror: null,
|
||||||
onnavigatesuccess: null,
|
onnavigatesuccess: null,
|
||||||
transition: null,
|
transition: null,
|
||||||
currentEntry: {
|
currentEntry: {
|
||||||
id: 'c72e7c89-2c22-47b6-86b8-e83db973ad22',
|
id: 'c72e7c89-2c22-47b6-86b8-e83db973ad22',
|
||||||
index: 1,
|
index: 1,
|
||||||
key: 'd6cc1590-0028-48e9-b6e7-b489d28d8481',
|
key: 'd6cc1590-0028-48e9-b6e7-b489d28d8481',
|
||||||
ondispose: null,
|
ondispose: null,
|
||||||
sameDocument: true,
|
sameDocument: true,
|
||||||
url: 'http://example.com',
|
url: 'http://example.com',
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
@ -1,48 +1,49 @@
|
|||||||
const sdenv = require('sdenv-extend').sdenv();
|
module.exports = (sdenv) => {
|
||||||
const window = sdenv.memory.sdWindow;
|
const window = sdenv.memory.sdWindow;
|
||||||
|
|
||||||
const DeprecatedStorageQuota = function DeprecatedStorageQuota() {
|
const DeprecatedStorageQuota = function DeprecatedStorageQuota() {
|
||||||
throw new TypeError("Illegal constructor");
|
throw new TypeError("Illegal constructor");
|
||||||
};
|
};
|
||||||
DeprecatedStorageQuota.prototype = {
|
DeprecatedStorageQuota.prototype = {
|
||||||
queryUsageAndQuota() {
|
queryUsageAndQuota() {
|
||||||
},
|
},
|
||||||
requestQuota() {
|
requestQuota() {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
sdenv.tools.setObjName(DeprecatedStorageQuota.prototype, "DeprecatedStorageQuota");
|
sdenv.tools.setObjName(DeprecatedStorageQuota.prototype, "DeprecatedStorageQuota");
|
||||||
const NetworkInformation = function NetworkInformation() {
|
const NetworkInformation = function NetworkInformation() {
|
||||||
throw new TypeError("Illegal constructor");
|
throw new TypeError("Illegal constructor");
|
||||||
|
}
|
||||||
|
sdenv.tools.setObjName(NetworkInformation.prototype, "NetworkInformation");
|
||||||
|
class NavigatorCustomize {
|
||||||
|
get webkitPersistentStorage() {
|
||||||
|
return { __proto__: DeprecatedStorageQuota.prototype };
|
||||||
|
}
|
||||||
|
get connection() {
|
||||||
|
return {
|
||||||
|
__proto__: NetworkInformation.prototype,
|
||||||
|
downlink: 3.85,
|
||||||
|
effectiveType: "4g",
|
||||||
|
onchange: null,
|
||||||
|
rtt: 100,
|
||||||
|
saveData: false,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
get userAgent() {
|
||||||
|
return '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';
|
||||||
|
}
|
||||||
|
get appVersion() {
|
||||||
|
return '5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'
|
||||||
|
}
|
||||||
|
get platform() {
|
||||||
|
return 'MacIntel';
|
||||||
|
}
|
||||||
|
get vendor() {
|
||||||
|
return "Google Inc.";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
sdenv.tools.mixin(window.navigator, NavigatorCustomize.prototype, ['userAgent', 'platform', 'appVersion', 'vendor']);
|
||||||
|
Object.keys(window.navigator.__proto__).forEach(name => {
|
||||||
|
sdenv.tools.setFuncNative(Object.getOwnPropertyDescriptor(window.navigator.__proto__, name)?.get, 'get');
|
||||||
|
})
|
||||||
}
|
}
|
||||||
sdenv.tools.setObjName(NetworkInformation.prototype, "NetworkInformation");
|
|
||||||
class NavigatorCustomize {
|
|
||||||
get webkitPersistentStorage() {
|
|
||||||
return { __proto__: DeprecatedStorageQuota.prototype };
|
|
||||||
}
|
|
||||||
get connection() {
|
|
||||||
return {
|
|
||||||
__proto__: NetworkInformation.prototype,
|
|
||||||
downlink: 3.85,
|
|
||||||
effectiveType: "4g",
|
|
||||||
onchange: null,
|
|
||||||
rtt: 100,
|
|
||||||
saveData: false,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
get userAgent() {
|
|
||||||
return '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';
|
|
||||||
}
|
|
||||||
get appVersion() {
|
|
||||||
return '5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'
|
|
||||||
}
|
|
||||||
get platform() {
|
|
||||||
return 'MacIntel';
|
|
||||||
}
|
|
||||||
get vendor() {
|
|
||||||
return "Google Inc.";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
sdenv.tools.mixin(window.navigator, NavigatorCustomize.prototype, ['userAgent', 'platform', 'appVersion', 'vendor']);
|
|
||||||
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;
|
const window = sdenv.memory.sdWindow;
|
||||||
|
|
||||||
window.styleMedia = sdenv.tools.getNativeProto('StyleMedia', 'styleMedia', {
|
window.styleMedia = sdenv.tools.getNativeProto('StyleMedia', 'styleMedia', {
|
||||||
type: 'screen'
|
type: 'screen'
|
||||||
})[1];
|
})[1];
|
||||||
|
}
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
const sdenv = require('sdenv-extend').sdenv();
|
module.exports = (sdenv) => {
|
||||||
const window = sdenv.memory.sdWindow;
|
const window = sdenv.memory.sdWindow;
|
||||||
|
|
||||||
[window.VisualViewport, window.visualViewport] = sdenv.tools.getNativeProto('VisualViewport', 'visualViewport', {
|
[window.VisualViewport, window.visualViewport] = sdenv.tools.getNativeProto('VisualViewport', 'visualViewport', {
|
||||||
height: 904,
|
height: 904,
|
||||||
offsetLeft: 0,
|
offsetLeft: 0,
|
||||||
offsetTop: 0,
|
offsetTop: 0,
|
||||||
onresize: null,
|
onresize: null,
|
||||||
onscroll: null,
|
onscroll: null,
|
||||||
pageLeft: 0,
|
pageLeft: 0,
|
||||||
pageTop: 0,
|
pageTop: 0,
|
||||||
scale: 1,
|
scale: 1,
|
||||||
width: 1066,
|
width: 1066,
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
const sdenv = require('sdenv-extend').sdenv();
|
module.exports = (sdenv) => {
|
||||||
const window = sdenv.memory.sdWindow;
|
const window = sdenv.memory.sdWindow;
|
||||||
|
|
||||||
const webkitRequestFileSystem = function webkitRequestFileSystem(type, size, successCallback, errorCallback) {
|
const webkitRequestFileSystem = function webkitRequestFileSystem(type, size, successCallback, errorCallback) {
|
||||||
if (typeof successCallback === 'function') {
|
if (typeof successCallback === 'function') {
|
||||||
window.setTimeout(successCallback, 0);
|
window.setTimeout(successCallback, 0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
sdenv.tools.setNativeFuncName(webkitRequestFileSystem, 'webkitRequestFileSystem')
|
sdenv.tools.setNativeFuncName(webkitRequestFileSystem, 'webkitRequestFileSystem')
|
||||||
window.webkitRequestFileSystem = webkitRequestFileSystem;
|
window.webkitRequestFileSystem = webkitRequestFileSystem;
|
||||||
|
}
|
||||||
|
@ -1,16 +1,25 @@
|
|||||||
const logger = require('@utils/logger');
|
const logger = require('@utils/logger');
|
||||||
const sdenv = require('sdenv-extend').sdenv();
|
module.exports = (sdenv) => {
|
||||||
const window = sdenv.memory.sdWindow;
|
const window = sdenv.memory.sdWindow;
|
||||||
|
|
||||||
window.fetch = function fetch() {};
|
window.fetch = function fetch() {};
|
||||||
sdenv.tools.setFuncNative(window.fetch);
|
sdenv.tools.setFuncNative(window.fetch);
|
||||||
window.Request = function Request() {};
|
window.Request = function Request() {};
|
||||||
sdenv.tools.setFuncNative(window.Request);
|
sdenv.tools.setFuncNative(window.Request);
|
||||||
window.closed = false;
|
window.closed = false;
|
||||||
window.opener = null;
|
window.opener = null;
|
||||||
window.clientInformation = window.navigator;
|
window.clientInformation = window.navigator;
|
||||||
window.isSecureContext = false;
|
window.isSecureContext = false;
|
||||||
window.open = function(url) {
|
window.open = function(url) {
|
||||||
sdenv.tools.exit({ url });
|
sdenv.tools.exit({ url });
|
||||||
|
}
|
||||||
|
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,
|
||||||
|
// });
|
||||||
}
|
}
|
||||||
// window.console = logger;
|
|
||||||
|
@ -6,11 +6,7 @@ require('module-alias')(path.dirname(paths.package));
|
|||||||
const SdenvExtend = require('sdenv-extend');
|
const SdenvExtend = require('sdenv-extend');
|
||||||
|
|
||||||
module.exports = (win, type = 'chrome') => {
|
module.exports = (win, type = 'chrome') => {
|
||||||
new SdenvExtend({
|
win.sdenv = new SdenvExtend({ }, win);
|
||||||
memory: {
|
require(`@/browser/${type}`)(win.sdenv);
|
||||||
SdenvExtend,
|
return win.sdenv;
|
||||||
}
|
|
||||||
}, win);
|
|
||||||
require(`@/browser/${type}`);
|
|
||||||
return new SdenvExtend();
|
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ function initBrowser(window, cookieJar) {
|
|||||||
window.onbeforeunload = async (url) => {
|
window.onbeforeunload = async (url) => {
|
||||||
const cookies = cookieJar.getCookieStringSync(baseUrl);
|
const cookies = cookieJar.getCookieStringSync(baseUrl);
|
||||||
logger.debug('生成cookie:', cookies);
|
logger.debug('生成cookie:', cookies);
|
||||||
process.exit();
|
window.close();
|
||||||
}
|
}
|
||||||
browser(window, 'chrome');
|
browser(window, 'chrome');
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ async function loadPages() {
|
|||||||
if (cookies) {
|
if (cookies) {
|
||||||
logger.debug('cookieJar:', cookies);
|
logger.debug('cookieJar:', cookies);
|
||||||
}
|
}
|
||||||
process.exit();
|
dom.window.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
loadPages()
|
loadPages()
|
||||||
|
@ -5,7 +5,20 @@ const { jsdomFromUrl } = require('../../utils/jsdom');
|
|||||||
|
|
||||||
const baseUrl = "https://wcjs.sbj.cnipa.gov.cn"
|
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({
|
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',
|
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) => {
|
window.onbeforeunload = async (url) => {
|
||||||
const cookies = cookieJar.getCookieStringSync(baseUrl);
|
const cookies = cookieJar.getCookieStringSync(baseUrl);
|
||||||
logger.debug('生成cookie:', cookies);
|
logger.debug('生成cookie:', cookies);
|
||||||
process.exit();
|
await loadPagesSecond(cookieJar)
|
||||||
|
window.close();
|
||||||
}
|
}
|
||||||
browser(window, 'chrome');
|
browser(window, 'chrome');
|
||||||
}
|
}
|
||||||
|
|
||||||
loadPages()
|
loadPagesFirst()
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
"name": "sdenv",
|
"name": "sdenv",
|
||||||
"version": "0.1.8",
|
"version": "0.1.8",
|
||||||
"description": "补环境框架",
|
"description": "补环境框架",
|
||||||
"main": "main.js",
|
|
||||||
"directories": {
|
"directories": {
|
||||||
"test": "test"
|
"test": "test"
|
||||||
},
|
},
|
||||||
@ -13,6 +12,12 @@
|
|||||||
"release": "release-it"
|
"release": "release-it"
|
||||||
},
|
},
|
||||||
"logLevel": "debug",
|
"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",
|
"author": "pysunday",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -23,7 +28,7 @@
|
|||||||
"log4js": "^6.9.1",
|
"log4js": "^6.9.1",
|
||||||
"module-alias": "^2.2.3",
|
"module-alias": "^2.2.3",
|
||||||
"node-addon-api": "^7.0.0",
|
"node-addon-api": "^7.0.0",
|
||||||
"sdenv-extend": "^1.2.0",
|
"sdenv-extend": "^1.3.0",
|
||||||
"sdenv-jsdom": "^1.1.0"
|
"sdenv-jsdom": "^1.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -2,7 +2,7 @@ const jsdom = require('sdenv-jsdom');
|
|||||||
const logger = require('./logger');
|
const logger = require('./logger');
|
||||||
const { JSDOM, CookieJar } = jsdom;
|
const { JSDOM, CookieJar } = jsdom;
|
||||||
|
|
||||||
exports.jsdomFromUrl = (config, ua) => {
|
exports.jsdomFromUrl = (config, cookieJar) => {
|
||||||
const resourceLoader = new jsdom.ResourceLoader({
|
const resourceLoader = new jsdom.ResourceLoader({
|
||||||
strictSSL: false,
|
strictSSL: false,
|
||||||
...config,
|
...config,
|
||||||
@ -13,7 +13,7 @@ exports.jsdomFromUrl = (config, ua) => {
|
|||||||
warn: logger.warn.bind(logger),
|
warn: logger.warn.bind(logger),
|
||||||
error: logger.error.bind(logger),
|
error: logger.error.bind(logger),
|
||||||
});
|
});
|
||||||
const cookieJar = new CookieJar()
|
if (!cookieJar) cookieJar = new CookieJar();
|
||||||
const options = {
|
const options = {
|
||||||
pretendToBeVisual: true,
|
pretendToBeVisual: true,
|
||||||
runScripts: "dangerously",
|
runScripts: "dangerously",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user