---------------------------------------小记
今天研究了下GreaseMonkey,看了别人写的"用户脚本",发现javascript、Dom、Xpath真是好东西,不过“支持”的问题就很让人头疼,最大的问题就是能不能解决兼容的问题。不过现在项目暂时用不到这些东东,作为知道来记下,现用现查吧。
大致记下 今天的知识点:
----------------------------------------------------- 函数
Code
1var postforms = document.evaluate(
2 "//form[translate(@method, 'POST ', 'post')='post']",
3 document,
4 null,
5 XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
6 null);
Code
1var 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>';
10window.addEventListener(
11 'load',
12 function() { document.body.innerHTML = newBody; },
13 true);
addEventListener
1document.addEventListener('click', function(event) {
2// event.target 是被点击的元素
3
4// 把你的代码放在这里
5
6// 如果您想阻止默认点击动作
7// (例如链接转向),使用下面这两条命令:
8event.stopPropagation();
9event.preventDefault();
10}, true);
Code
1function newsubmit(event) {
2var target = event ? event.target : this;
3
4// 在这里定义想做的操作
5alert('Submitting form to ' + target.action);
6
7// 调用真正的提交函数
8this._submit();
9}
10
11// 捕获所有表单的 onsubmit 事件
12window.addEventListener('submit', newsubmit, true);
13
14// 如果脚本调用 someForm.submit(),onsubmit 事件不会发生,
15// 所以我们需要重新定义 HTMLFormElement 类的 submit 方法。
16HTMLFormElement.prototype._submit = HTMLFormElement.prototype.submit;
17HTMLFormElement.prototype.submit = newsubmit;
正常情况下,当用户提交一个表单时,例如,点击表单中的 提交 按钮或者按 回车键
),都会触发 submit
事件。但是,当脚本调用 aForm.submit()
提交表单时,却不会触发 submit
事件。因此,您必须做两件事来捕获表单的提交事件:给 submit
事件增加事件监听,并且修改 HTMLFormElement
类的原型来重定向 submit()
方法到您的自定义函数上。
5
GM_xmlhttpRequest
1GM_xmlhttpRequest({
2method: 'GET',
3url: 'http://greaseblog.blogspot.com/atom.xml',
4headers: {
5'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
6'Accept': 'application/atom+xml,application/xml,text/xml',
7},
8onload: function(responseDetails) {
9alert('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相关网站。