Optimize Ebay function to make it more convenient (support ebay.com.hk domain name)
目前為
// ==UserScript==
// @name Ebay Seller Assistant
// @name:zh-CN Ebay卖家助手
// @author Antecer
// @version 2.1
// @description Optimize Ebay function to make it more convenient (support ebay.com.hk domain name)
// @description:zh-CN 优化Ebay功能使其更方便(支持 ebay.com.hk 域名)
// @icon64 https://antecer.gitlab.io/amusingdevice/icon/antecer.ico
// @icon https://antecer.gitlab.io/amusingdevice/icon/antecer.ico
// @namespace https://greasyfork.org/zh-CN/users/42351
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_xmlhttpRequest
// @grant GM_registerMenuCommand
// @include http*://*.ebay.com.hk/*
// @run-at document-end
// @compatible chrome 测试通过
// ==/UserScript==
// 验证网址是否包含某字符串
function UrlExp(textStr) {
return RegExp(textStr).test(window.location.href);
}
// 创建选择器的简化写法
function dQuery(selector) {
return document.querySelector(selector);
}
function dQueryAll(selector) {
return document.querySelectorAll(selector);
}
// 出售记录 Page
if (UrlExp(/(MyeBayNextSold|MyeBayAllSelling|MyeBayNextAllSelling)/)) {
// 修改订单处理菜单(将查看订单信息和添加备注直接显示,不用点击下拉菜单)
dQueryAll('#ItemDisplayContainer_SoldNext #mT').forEach((item, index, arr) => {
let Transactions = item.querySelector('td').id.split('Transactions.')[1].split('_');
let itemid = Transactions[0];
let transId = Transactions[1];
// 显示“檢視訂單詳細資料”菜单
let paymentStatus = document.createElement('tr');
paymentStatus.innerHTML = `<td>${dQuery('#hdn_al_241_pdm_js a[href*=VPS]').outerHTML.replace('#TID#', transId).replace('_Item_Id', itemid)}</td>`;
item.parentNode.appendChild(paymentStatus);
// 显示“新增备注/修改备注”菜单
let remark = document.createElement('tr');
remark.innerHTML = `<td>${dQueryAll('#hdn_al_241_pdm_js a[onclick*=ADDN]')[index].outerHTML.replace(/_Item_Id_\d+/g, itemid + '_' + transId).replace('_Item_Id_', itemid)}</td>`;
item.parentNode.appendChild(remark);
// 显示收件人信息
let paymenAddr = document.createElement('tr');
paymenAddr.innerHTML = `<td><div id=${transId}></div></td>`;
item.parentNode.appendChild(paymenAddr);
// 抓取订单详细资料,提取物品运送地址信息(暂时仅支持ebay香港站)
let getPaymentUrl = paymentStatus.querySelector('a').href + '&getPaymentAddress';
if (document.domain == 'my.ebay.com.hk') {
GM_xmlhttpRequest({
method: "GET",
url: getPaymentUrl,
onload: function (request) {
let reqDom = document.createElement('div');
reqDom.innerHTML = request.responseText;
paymenAddr.innerHTML = `<td><div id=${transId}>${reqDom.querySelector('#addrrow').innerHTML}</div></td>`;
}
});
}
});
// 修改运单追踪功能 (使用17Track代替,追踪功能更强大)
let trackAPI = '//www.17track.net/en/externalcall?resultDetailsH=356&fc=0&nums=';
let _17Track = document.createElement('div');
_17Track.id = 'trackBox';
_17Track.innerHTML = '<style type="text/css">#trackBoxClose{text-decoration: none;position: absolute; right: 0px; top: 0px; width: 55px; height: 55px; line-height: 55px; background: #7FB0B0B0; color: #FFFFFFFF; font-size: 48px; text-align: center; font-family: Arial, Helvetica, sans-senif; z-index: 100; cursor: pointer;} #trackBoxClose:hover{ background:black;}</style><a id="trackBoxClose">×</a><iframe id="tracker" name="tracker" src="" frameborder="0" scrolling="no" height="600" width="600"></iframe>';
_17Track.style.cssText = 'display:none;z-index:99999;position:absolute;left:-999;top:-999;width:600px;height:589px;box-shadow:rgba(0, 0, 0, 0.28) 0px 1px 1px 1px;';
_17Track.addEventListener('click', (event) => {
if (event.target.tagName == 'A') { _17Track.style.display = 'none'; }
});
dQuery('body').appendChild(_17Track);
dQueryAll('[id^=track] [href^=javascript]').forEach((item) => {
// 隐藏Paypal自带追踪功能
item.style.display = 'none';
// 创建17Track追踪元素
let tracker = document.createElement('a');
tracker.style.cursor = 'pointer';
tracker.title = '17Track';
tracker.innerHTML = item.innerHTML;
item.parentNode.insertBefore(tracker, item);
});
dQuery('#ItemDisplayContainer_SoldNext').addEventListener('click', (event) => {
// 监听运单号点击事件,显示运单追踪页面
if (event.path[0].title == '17Track') {
_17Track.querySelector('#tracker').src = trackAPI + event.path[0].innerHTML;
_17Track.style.left = event.pageX + 'px';
_17Track.style.top = event.pageY + 'px';
_17Track.style.display = 'block';
}
});
}
// 联系买家 Page
if (UrlExp(/contact/)) {
// 创建常用沟通语句
let contactMsgs = [
["投递成功", "Hello, I track your order has been delivered. Did you receive it?"],
["投递失败", "Hello, I track your order delivery failed. Do you know what happened?"],
["抵达待取", "Hello, I track your order has arrived. Did you receive it?"],
["物流异常", "Hello, I track your order logistics information has not been updated for a long time. Do you know what happened?"]
]
// 创建快捷留言按钮
let buttonBar = document.createElement('div');
contactMsgs.forEach((item) => {
buttonBar.innerHTML += `<input type="button" value="${item[0]}" style="margin: 2px;"/>`;
});
dQuery('.top-head').appendChild(buttonBar);
// 监听快捷留言按钮点击事件
buttonBar.addEventListener('click', (event) => {
if (event.path[0].type == 'button') {
dQuery('#msg_cnt_cnt').value = contactMsgs.find(item => item[0] == event.path[0].value)[1];
// 使用input事件触发文本框change事件
let msgInputEvent = document.createEvent("HTMLEvents");
msgInputEvent.initEvent("input", true, true);
dQuery('#msg_cnt_cnt').dispatchEvent(msgInputEvent);
}
});
}
// 新增或编辑追踪号码 Page
if (UrlExp(/AddTrackingNumber/)) {
// 设置运送公司为 China Post
dQuery('.carrierBox .boxtext').value = 'China Post';
}
// 留下信用评价 Page
if (UrlExp(/fdbk/)) {
// 创建评价内容
let leaveMessage = 'Thanks for your support!';
// 创建输入框change事件触发器
let inputChangeEvent = document.createEvent("HTMLEvents");
inputChangeEvent.initEvent("change", true, true);
// 创建评价按钮CSS样式
let fdbkButtonStyle = 'cursor: pointer; background-color: #876543; color: #fff; padding: 0 10px; line-height: 40px; font-size: 16px; position: fixed; right: -2px; transform: rotate(-90deg) translate(50%,50%);';
// 添加评价送达按钮
let leaveNorm = document.createElement('div');
leaveNorm.style.cssText = fdbkButtonStyle + 'top: calc(50% - 17em);';
leaveNorm.innerHTML = '评价送达';
dQuery('#seek').parentNode.insertBefore(leaveNorm,dQuery('#seek'));
leaveNorm.addEventListener('click', () => {
dQueryAll('.otd_section').forEach((item) => {
item.parentNode.querySelector('.pnn_section [value=POSITIVE]').click();
item.parentNode.querySelector('[id^=pnnComment]').value = leaveMessage;
item.parentNode.querySelector('[id^=pnnComment]').dispatchEvent(inputChangeEvent);
});
});
// 添加评价全部按钮
let leaveAll = document.createElement('div');
leaveAll.style.cssText = fdbkButtonStyle + 'top: calc(50% - 11em);';
leaveAll.innerHTML = '评价全部';
dQuery('#seek').parentNode.insertBefore(leaveAll,dQuery('#seek'));
leaveAll.addEventListener('click', () => {
dQueryAll('.pnn_section').forEach((item) => {
item.parentNode.querySelector('.pnn_section [value=POSITIVE]').click();
item.parentNode.querySelector('[id^=pnnComment]').value = leaveMessage;
item.parentNode.querySelector('[id^=pnnComment]').dispatchEvent(inputChangeEvent);
});
});
// 添加留下评价按钮
let leaveButton = document.createElement('div');
leaveButton.style.cssText = fdbkButtonStyle + 'top: calc(50% - 5em);';
leaveButton.innerHTML = '留下评价';
dQuery('#seek').parentNode.insertBefore(leaveButton,dQuery('#seek'));
leaveButton.addEventListener('click', () => {
dQueryAll('[id^=submitFeedbackBtn]:not([disabled])').forEach((item) => {
item.click();
});
});
// 默认触发一次评价送达
leaveNorm.click();
}
// 插件菜单
GM_registerMenuCommand('Ebay卖家助手配置', () => {
console.log(event);
alert('功能规划中...');
});