创建一个 Greasemonkey 'Button' 以将某些数据输出到页面

Creating a Greasemonkey 'Button' to output certain data to a page

这是我的第一篇文章,所以要有礼貌。

我正在寻找一个 Greasemonkey 脚本编码来获取某些数据片段,在本例中是代理 ID 和工单号,并将它们导出到 Excel。

我已经整理了一些东西,基本上可以将详细信息放入 outlook 中,然后通过电子邮件将其发送给某人,但我只是想在网页上查看 'correlate',但是现在我办公室的资源有限,没有可以在内部创建 MySQL 数据库(虽然这应该很快为我完成)并且可能会使事情变得容易得多:)

这是我从现有脚本中得到的代码,它也将结果输出到一个不再存在的页面(我觉得前一个人的想法和我一样)

// ==UserScript==
// @name           Easy Feedback
// @namespace      http://blah
// @description    Easy feedback buttons
// @include        https://blah.example.com/custdetails-new.html*
// @include        https://blah.example.com/ticket_show.html*
// ==/UserScript==

// Inject jQuery into the host
function addJQuery(callback) {
var script = document.createElement("script");
script.setAttribute("src", "https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js");
script.addEventListener('load', function() {
    var script = document.createElement("script");
    script.textContent = "(" + callback.toString() + ")();";
    document.body.appendChild(script);
}, false);
document.body.appendChild(script);
}

// Burst out of its stomach
function main() {
// Get the current URL
var sAgent = "";
var sTicket = "";

// Get current ticket (if possible)
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

for (var i = 0; i < hashes.length; i++) {
    hash = hashes[i].split('=');
    vars.push(hash[0]);
    vars[hash[0]] = hash[1];
}

if (vars["ticket_id"]) {
    sTicket = vars["ticket_id"];
}

// Add feedback buttons
$("td:contains('Company staff')")
.not(":contains('Raised:')")
.not(":contains('by:')")
.each(function() {
    var tmpTicket = "";

    if (sTicket == "") {
        var tmp = $(this).closest(":contains('Ticket:')").children(0).children(0).children(0).children(0).children(0).children(0).text();
        var matched = tmp.match(/Ticket:[\s]+(.)+/);
        tmpTicket = matched[0].substr(8);
    } else {
        tmpTicket = sTicket;
    }

    tmp = ($(this).text()).match(/.+\(/);
    sAgent = tmp[0].substr(0, tmp[0].length - 1);

    $(this).append('<br /><br /><a href="mailto:mail@example.com?subject=Feedback on ' + sAgent + ' (' + tmpTicket + ')&amp;body=Agent: ' + sAgent + '%0ATicket: ' + tmpTicket + '%0A%0A%0ADetails:">Feedback</a>').children(0).click(function() {
        $(this).parent().parent().fadeOut(200);

         Record the click for Monitoring
        var tmpId = Math.floor(Math.random()*100);
        $('<iframe name="feedback' + tmpId + '" id="feedback' + tmpId + '" src="WEBSITE/Feedback/record.html?ticket=' + tmpTicket + '&agent=' + sAgent + '" style="display:none;" />').load(function() {
            $(this).remove();
        }).appendTo('body');

        $(this).parent().parent().fadeIn(200);
    });;
});
}

// Plant that seed
addJQuery(main);

所以...是的,任何建议将不胜感激。

我会举起手来承认我有一段时间没有编码了,但是我在这里所做的是修复损坏的代码以使事情正常进行,所以我的编码更多 'hack and slash' 没有专业化...:/

我感觉他将此指向某处的数据库,然后在 html 页面上显示结果,但我不能确定,因为这是在我加入公司之前很久就创建的

此代码正在记录 iframe 位中的操作,向远程服务发出 GET 请求:

WEBSITE/Feedback/record.html?ticket=' + tmpTicket + '&agent=' + sAgent + '

可能有(或应该有)一些服务器端服务 URL 可以捕获请求并记录它。如果您的问题是此服务不再可用,我会探讨两种可能的解决方案:

  1. 创建您自己的保存数据的日志服务,如果您从不同的浏览器登录,这是必要的。 PHP 允许您非常轻松地创建这样的服务,这是将请求参数附加到服务器上的 CSV 文件中所需的全部代码:

    <?php
    $fp = fopen('log.csv', 'a');
    fwrite($fp, $_REQUEST['ticket'] . ',' . $_REQUEST['agent']);
    fclose($fp);
    ?>
    
  2. 将数据本地保存在 JavaScript 中并使用 HTML5 导出数据 download,请参阅对 Export javascript data to CSV file without server interaction

    [=26 的回复=]