这是我的第一个帖子,所以是gentile。
我希望将Greasemonkey脚本编码为获取某些数据片段,在这种情况下是代理ID和票号,并将它们导出到Excel。
我已经将一些基本上将详细信息投入到Outlook中的内容发送到一起,然后通过电子邮件将其发送给某人,但我只是希望将相关内容与之关联起来。在网页上,但是现在我在办公室里的资源有限,无法在内部创建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);
所以......是的,任何建议都会受到高度赞赏。
我会举起手来承认我没有编码一段时间,但我在这里所做的是修复损坏的代码以使事情有效,所以我的编码更多&#39; hack and slash&# 39;没有专业化......:/
我觉得他把它指向某个地方的数据库,然后在html页面上显示结果,虽然我无法确定这是在我与公司合作之前很久就创建的
答案 0 :(得分:0)
此代码在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的回复