---------------------------------------小记
今天研究了下GreaseMonkey,看了别人写的"用户脚本",发现javascript、Dom、Xpath真是好东西,不过“支持”的问题就很让人头疼,最大的问题就是能不能解决兼容的问题。不过现在项目暂时用不到这些东东,作为知道来记下,现用现查吧。
大致记下 今天的知识点:
----------------------------------------------------- 函数

Code
1
var postforms = document.evaluate(
2
"//form[translate(@method, 'POST ', 'post')='post']",
3
document,
4
null,
5
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
6
null);

Code
1
var newBody =
2
'<html>' +
3
'<head>' +
4
'<title>My New Page</title>' +
5
'</head>' +
6
'<body>' +
7
'<p>This page is a complete replacement of the original.</p>' +
8
'</body>' +
9
'</html>';
10
window.addEventListener(
11
'load',
12
function()
{ document.body.innerHTML = newBody; },
13
true);

addEventListener
1
document.addEventListener('click', function(event)
{
2
// event.target 是被点击的元素
3
4
// 把你的代码放在这里
5
6
// 如果您想阻止默认点击动作
7
// (例如链接转向),使用下面这两条命令:
8
event.stopPropagation();
9
event.preventDefault();
10
}, true);

Code
1
function newsubmit(event)
{
2
var target = event ? event.target : this;
3
4
// 在这里定义想做的操作
5
alert('Submitting form to ' + target.action);
6
7
// 调用真正的提交函数
8
this._submit();
9
}
10
11
// 捕获所有表单的 onsubmit 事件
12
window.addEventListener('submit', newsubmit, true);
13
14
// 如果脚本调用 someForm.submit(),onsubmit 事件不会发生,
15
// 所以我们需要重新定义 HTMLFormElement 类的 submit 方法。
16
HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
17
HTMLFormElement.prototype.submit = newsubmit;
正常情况下,当用户提交一个表单时,例如,点击表单中的 提交 按钮或者按 回车键
),都会触发 submit
事件。但是,当脚本调用 aForm.submit()
提交表单时,却不会触发 submit
事件。因此,您必须做两件事来捕获表单的提交事件:给 submit
事件增加事件监听,并且修改 HTMLFormElement
类的原型来重定向 submit()
方法到您的自定义函数上。
5

GM_xmlhttpRequest
1
GM_xmlhttpRequest(
{
2
method: 'GET',
3
url: 'http://greaseblog.blogspot.com/atom.xml',
4
headers:
{
5
'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
6
'Accept': 'application/atom+xml,application/xml,text/xml',
7
},
8
onload: function(responseDetails)
{
9
alert('Request for Atom feed returned ' + responseDetails.status +
10
' ' + responseDetails.statusText + '\n\n' +
11
'Feed data:\n' + responseDetails.responseText);
12
}
13
});
还有很多高级主题,API函数,比如GM_xmlhttpRequest都没有来的及看,项目急 等有机会了在回过头看吧~
示例代码来自 深入浅出GreaseMonkey ,更多代码可以到UserScript相关网站。