创建一个 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 + ')&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 可以捕获请求并记录它。如果您的问题是此服务不再可用,我会探讨两种可能的解决方案:
创建您自己的保存数据的日志服务,如果您从不同的浏览器登录,这是必要的。 PHP 允许您非常轻松地创建这样的服务,这是将请求参数附加到服务器上的 CSV 文件中所需的全部代码:
<?php
$fp = fopen('log.csv', 'a');
fwrite($fp, $_REQUEST['ticket'] . ',' . $_REQUEST['agent']);
fclose($fp);
?>
将数据本地保存在 JavaScript 中并使用 HTML5 导出数据 download
,请参阅对 Export javascript data to CSV file without server interaction
[=26 的回复=]
这是我的第一篇文章,所以要有礼貌。
我正在寻找一个 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 + ')&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 可以捕获请求并记录它。如果您的问题是此服务不再可用,我会探讨两种可能的解决方案:
创建您自己的保存数据的日志服务,如果您从不同的浏览器登录,这是必要的。 PHP 允许您非常轻松地创建这样的服务,这是将请求参数附加到服务器上的 CSV 文件中所需的全部代码:
<?php $fp = fopen('log.csv', 'a'); fwrite($fp, $_REQUEST['ticket'] . ',' . $_REQUEST['agent']); fclose($fp); ?>
将数据本地保存在 JavaScript 中并使用 HTML5 导出数据
[=26 的回复=]download
,请参阅对 Export javascript data to CSV file without server interaction