GreaseMonkey

---------------------------------------小记

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

       大致记下 今天的知识点:

----------------------------------------------------- 函数

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

 

  • 2
ContractedBlock.gif ExpandedBlockStart.gif 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'
12ExpandedBlockStart.gifContractedBlock.gif    function() { document.body.innerHTML = newBody; },
13    true);

 

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

 

  • 4

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 1ExpandedBlockStart.gifContractedBlock.giffunction 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

ContractedBlock.gif ExpandedBlockStart.gif GM_xmlhttpRequest
 1ExpandedBlockStart.gifContractedBlock.gifGM_xmlhttpRequest({
 2method: 'GET',
 3url: 'http://greaseblog.blogspot.com/atom.xml',
 4ExpandedSubBlockStart.gifContractedSubBlock.gifheaders: {
 5'User-agent''Mozilla/4.0 (compatible) Greasemonkey',
 6'Accept''application/atom+xml,application/xml,text/xml',
 7}
,
 8ExpandedSubBlockStart.gifContractedSubBlock.gifonload: 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相关网站。

 

转载于:https://www.cnblogs.com/hzq3554055/archive/2008/08/07/1263200.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值