Greasy Fork 还支持 简体中文。

Ebay Seller Assistant

Optimize Ebay function to make it more convenient (support ebay.com.hk domain name)

目前為 2018-10-28 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==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('功能规划中...');
});