mirror of
https://github.com/ylw00/qxVm.git
synced 2025-04-12 04:03:28 +08:00
178 lines
7.0 KiB
JavaScript
178 lines
7.0 KiB
JavaScript
Location = function Location() {
|
|
throw new TypeError("TypeError", "Illegal constructor")
|
|
}; lwVm.safefunction(Location);
|
|
location = {};
|
|
|
|
; (function () {
|
|
Location.prototype = {};
|
|
lwVm.rename(Location.prototype, "Location");
|
|
lwVm.safeDescriptor_addConstructor(Location);
|
|
|
|
|
|
const $safe_get_attribute = ['hash', 'host', 'hostname', 'href', 'origin', 'pathname', 'port', 'protocol', 'search'];
|
|
const $safe_set_attribute = ['hash', 'host', 'hostname', 'href', 'origin', 'pathname', 'port', 'protocol', 'search'];
|
|
const $safe_func_attribute = ['ancestorOrigins', 'assign', 'reload', 'replace', 'toString'];
|
|
let $attribute_map = {
|
|
hash: "",
|
|
host: "newtab",
|
|
hostname: "newtab",
|
|
href: "chrome://newtab/",
|
|
origin: "chrome://newtab",
|
|
pathname: "/",
|
|
port: "",
|
|
protocol: "chrome:",
|
|
search: ""
|
|
};
|
|
|
|
location = {
|
|
ancestorOrigins() {
|
|
let result = new class DOMStringList { };
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Func', 'Location', 'ancestorOrigins', arguments, result);
|
|
return result;
|
|
},
|
|
assign() {
|
|
let result = undefined;
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Func', 'Location', 'assign', arguments, result);
|
|
return result;
|
|
},
|
|
get hash() {
|
|
let result = $attribute_map.hash;
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Get', 'Location', 'hash', arguments, result);
|
|
return result
|
|
},
|
|
set hash(value) {
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Set', 'Location', 'hash', arguments);
|
|
$attribute_map.hash = value
|
|
},
|
|
|
|
get host() {
|
|
let result = $attribute_map.host
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Get', 'Location', 'host', arguments, result);
|
|
return result
|
|
},
|
|
set host(value) {
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Set', 'Location', 'host', arguments);
|
|
$attribute_map.host = value
|
|
},
|
|
|
|
get hostname() {
|
|
let result = $attribute_map.hostname;
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Get', 'Location', 'hostname', arguments, result);
|
|
return result
|
|
},
|
|
set hostname(value) {
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Set', 'Location', 'hostname', arguments);
|
|
$attribute_map.hostname = value
|
|
},
|
|
|
|
get href() {
|
|
let result = $attribute_map.href
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Get', 'Location', 'href', arguments, result);
|
|
return result
|
|
},
|
|
set href(value) {
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Set', 'Location', 'href', arguments);
|
|
let a = value.match(/([^:]+:)\/\/([^/:?#]+):?(\d+)?([^?#]*)?(\?[^#]*)?(#.*)?/);
|
|
location.protocol = a[1] ? a[1] : "";
|
|
location.host = a[2] ? a[2] : "";
|
|
location.port = a[3] ? a[3] : "";
|
|
location.pathname = a[4] ? a[4] : "";
|
|
location.search = a[5] ? a[5] : "";
|
|
location.hash = a[6] ? a[6] : "";
|
|
location.hostname = location.host;
|
|
location.origin = location.protocol + "//" + location.host + (location.port ? ":" + location.port : "");
|
|
$attribute_map.href = value;
|
|
},
|
|
|
|
get origin() {
|
|
let result = $attribute_map.origin;
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Get', 'Location', 'origin', arguments, result);
|
|
return result
|
|
},
|
|
set origin(value) {
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Set', 'Location', 'origin', arguments);
|
|
$attribute_map.origin = value
|
|
},
|
|
|
|
get pathname() {
|
|
let result = $attribute_map.pathname
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Get', 'Location', 'pathname', arguments, result);
|
|
return result
|
|
},
|
|
set pathname(value) {
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Set', 'Location', 'pathname', arguments);
|
|
$attribute_map.pathname = value
|
|
},
|
|
|
|
get port() {
|
|
let result = $attribute_map.port;
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Get', 'Location', 'port', arguments, result);
|
|
return result
|
|
},
|
|
set port(value) {
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Set', 'Location', 'port', arguments);
|
|
$attribute_map.port = value
|
|
},
|
|
get protocol() {
|
|
let result = $attribute_map.protocol;
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Get', 'Location', 'protocol', arguments, result);
|
|
return result;
|
|
},
|
|
set protocol(value) {
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Set', 'Location', 'protocol', arguments);
|
|
$attribute_map.protocol = value
|
|
},
|
|
reload() {
|
|
let result = undefined;
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Func', 'Location', 'reload', arguments, result);
|
|
return result;
|
|
},
|
|
replace() {
|
|
let result = undefined;
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Func', 'Location', 'replace', arguments, result);
|
|
return result;
|
|
},
|
|
get search() {
|
|
let result = $attribute_map.search;
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Get', 'Location', 'search', arguments, result);
|
|
return result
|
|
},
|
|
set search(value) {
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Set', 'Location', 'search', arguments);
|
|
$attribute_map.search = value
|
|
},
|
|
toString() {
|
|
let result = location.href;
|
|
if (lwVm.config.logOpen === true) lwVm.logAdd('Func', 'Location', 'toString', arguments, result);
|
|
return result
|
|
}
|
|
};
|
|
// 添加两个特殊的属性
|
|
Object.defineProperty(location, 'valueOf', { value: valueOf, configurable: false, enumerable: false, writable: false });
|
|
Object.defineProperties(location, { [Symbol.toPrimitive]: { value: undefined, configurable: false, enumerable: false, writable: false } });
|
|
|
|
for (let key of $safe_get_attribute) {
|
|
Object.defineProperty(location, key, {
|
|
configurable: false,
|
|
enumerable: true
|
|
});
|
|
lwVm.safefunction(Object.getOwnPropertyDescriptor(location, key)['get']);
|
|
lwVm.safefunction(Object.getOwnPropertyDescriptor(location, key)['set']);
|
|
};
|
|
|
|
for (let key of $safe_func_attribute) {
|
|
Object.defineProperty(location, key, {
|
|
value: location[key],
|
|
configurable: false,
|
|
enumerable: true,
|
|
writable: false
|
|
});
|
|
lwVm.safefunction(Object.getOwnPropertyDescriptor(location, key)['value'])
|
|
}
|
|
Object.setPrototypeOf(location, Location.prototype);
|
|
|
|
// 初始化用户配置
|
|
location.href = lwVm.default_envs['location']['href'];
|
|
})()
|
|
|