User Script

中微8S6990实战:5分钟搞定GPIO配置与按键中断(附避坑指南) 本文以中微8S6990单片机为例,详细讲解了GPIO按键中断的快速配置方法与实战避坑指南。内容涵盖GPIO初始化、中断配置、软件消抖优化及低功耗唤醒等关键步骤,并提供了利用逻辑分析仪进行调试验证的有效方法,帮助开发者快速构建稳定可靠的嵌入式按键交互系统。 阅读详情

摘要:本文讲述浏览器技术中常用的user script。

一、什么是user script

User scripts或者称userscripts,是用来在客户端(浏览器或者代理服务器)对特定的网页进行修改的脚本,一般用来改变页面的外观或者增加修改功能。User scripts目前常见的是用javascript书写的脚本。

最著名的user scripts是AdBlock,帮助用户拦截广告在内的各种页面元素,并使这些内容不被下载或者显示。

User scripts最早在Firefox上运用(通过Greasemonkey扩展),迄今为止,包括Chrome,Opera,IE,Safari等浏览器或内置或通过插件,都对user script进行的支持。详细情况参见http://emulefans.com/userscript-on-various-browsers/

Chrome对User Script的安装最简单,9.0以后的版本,只要user.js后缀的脚本直接拖到浏览器中,在右下角的选择中,选允许,就成功安装了脚本,通过工具à扩展程序菜单,可以进行插件的管理。

Firefox需要安装Greasemonkey插件来支持user script,插件和user script的安装参考http://diveintogreasemonkey.org/install/index.html

二、user  script的书写

书写user script的前提是熟悉html和javascript。在学习user script时,Dive into Greasmonkey(http://diveintogreasemonkey.org/toc/)是一本很棒的教材,几乎是手把手交。

下面以我写的一个user script为例来简单讲述user script的书写。

相信大家平常搜索引擎的使用概率都非常高,对于google和baidu这两个搜索引擎,大家可能各有喜好,对于我来说,技术方面的问题,我偏向用google进行搜索,但是有时候有些特定的搜索特别是中文搜索,貌似baidu的搜索结果也有优于google的地方,所以我特别希望浏览器提供一个功能,就是我在进行google搜索以后,如果不满意搜索结果,可以直接点击菜单进行baidu搜索,不需要再输入关键词。同样,在baidu搜索以后,如果没有找到合适的结果,则直接点击菜单进行google搜索,同样不需要输入关键词。以前我希望通过修改浏览器内核来实现,自从发现了user script这个东东以后,我发现,用user script来实现这个,只需要几句话,非常之简单,不需要深入内核。

先上一张图,在baidu中搜索”user script”的截图。

 

 

 

          在上图中点击”try google”,转向google搜索。搜索结果如下图,红色标注链接try baidu,可以直接尝试搜索baidu

 

 

 

 

    看了一天的diveintogreasemonkey,写出了如下user script。

         

[javascript:showcolumns]  view plain copy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. // ==UserScript==  
  2. // @name         Try another Search engine  
  3. // @author       tomorrow.cyz@gmail.com  
  4. // @namespace    http://t.sina.com.cn/chenyuzhi  
  5. // @description  try another search engine when you perform baidu/google search  
  6. // @include      http://www.baidu.com/s?*  
  7. // @include      http://baidu.com/s?*  
  8. // @include      http://www.google.com.hk/*  
  9. // @include      http://google.com.hk/*  
  10. // ==/UserScript==  
  11. function g_search_func()  
  12. {  
  13.  var keywords=document.getElementById("kw");  
  14.  window.location.href="http://www.google.com.hk/search?q="+keywords.value;  
  15. }  
  16.   
  17. if (document.location.href.indexOf('baidu.com') != -1)  
  18. {  
  19.     var tools = document.getElementById('tools');  
  20.     if (tools) {  
  21.         tools.parentNode.removeChild(tools);  
  22.     }  
  23.     var con = document.getElementById('mCon');  
  24.     if (con) {  
  25.         con.parentNode.removeChild(con);  
  26.     }  
  27.     var menus = document.getElementById('mMenu');  
  28.     if (menus) {  
  29.         menus.parentNode.removeChild(menus);  
  30.     }  
  31.     var allEle, thisEle;  
  32.     allEle = document.evaluate(  
  33.         "//*[@class='tools']",  
  34.         document,  
  35.         null,  
  36.         XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,  
  37.         null);  
  38.     for (var i = 0; i < allEle.snapshotLength; i++) {  
  39.         thisEle = allEle.snapshotItem(i);  
  40.         thisEle.parentNode.removeChild(thisEle);  
  41.     }  
  42.     var google_btn=document.createElement("input");  
  43.     var baidu_btn=document.getElementById("kw").nextSibling;  
  44.     google_btn.setAttribute("type""button");  
  45.     google_btn.setAttribute("name""gsearch");  
  46.     google_btn.setAttribute("value""try google");  
  47.     google_btn.addEventListener('click',g_search_func,true);  
  48.     google_btn.setAttribute("class","btn");  
  49.     baidu_btn.parentNode.insertBefore(google_btn,baidu_btn.nextSibling);  
  50. }  
  51. else  
  52. {  
  53.     var allEle, thisEle;  
  54.     allEle = document.evaluate(  
  55.     "//input[@name='q']",  
  56.     document,  
  57.     null,  
  58.     XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,  
  59.     null);  
  60.     for (var i = 0; i < allEle.snapshotLength; i++) {  
  61.     thisEle = allEle.snapshotItem(i);  
  62.     break;  
  63.     }  
  64.     var keywords=thisEle.value;  
  65.       
  66.     var resultStats=document.getElementById('resultStats');  
  67.     if(resultStats)  
  68.     {  
  69.         var baidu_link=document.createElement("div");  
  70.         baidu_link.innerHTML="<a  class=/"gl nobr/"  style="/" mce_style="/""color:#4373db/" href="/" mce_href="/""http://www.baidu.com/s?wd=" +keywords+ "/"><strong>try baidu</strong></a>";  
  71.     }  
  72. }  

    

        我是个javascript和html的菜鸟,所以这个user script,可想而知,写得也不咋样。但作为一个入门介绍的例子,将就着吧。

        user script的开始首先要有meta data。这是固定的格式,说明作者,user script的描述,这些信息在用户安装的时候可能会弹出来提示用户。另外,@include很重要,表示这个user script适用的页面。同@include关键字相反,还有@exclude关键字,过滤掉一些网站。

      推荐使用DOM inpector结合代码来进行学习分析。对于baidu的页面来说,该脚本去掉了tools,mCom,mMenu等元素(也就是手写,设为首页等我认为无用的链接,根据id识别),在这里用到的还都是javascript的语句。有时候baidu的页面中tools没有id,而是name属性,这时候用到了XPath的功能,XPath在用户脚本中非常重要,建议阅读diveintogreasemonkey的4.6节(http://diveintogreasemonkey.org/patterns/match-attribute.html)以及xpath教程。baidu获取关键字是通过getElementById,取value值,就是javascript语句,然后这里用到了一句window.location.href=来进行跳转。另外一个就是try google按钮的加入,其实只要通过DOM inspector找到"百度一下“按钮,然后用javascript实现出来,再调用insertBefore来插入生成的"try google”按钮的节点就可以。对于google的页面,生成的是link,所以更加简单,自己阅读代码吧。

      http://userscripts.org  这个网站提供了大量的user script供大家免费下载学习,还可以在论坛提脚本申请。

             

参考

1.       UserScript(用户脚本)FirefoxOperaIE678等不同浏览器上的使用(http://emulefans.com/userscript-on-various-browsers/

2.             Greasemonkey的wiki(http://zh.wikipedia.org/w/index.php?title=GreaseMonkey)

3.             Greasemonkey教程(http://diveintogreasemonkey.org/toc/

4.               Opera的user script介绍(http://kb.operachina.com/node/184

COMSOL新手必看:锂电池仿真从入门到精通的5个实战案例(附模型文件) 本文为COMSOL新手提供锂电池仿真的5个实战案例,涵盖锂枝晶生长模拟、电池热失控预警、SOC估计等效电路模型、电池组液冷系统热管理及SOH衰退模型构建。通过详细步骤和参数设置,帮助用户快速掌握锂电池仿真技术,提升新能源研发效率。附模型文件可直接应用。 阅读详情

相关推荐

userscripts:各种用途的用户脚本

用户脚本 各种用途的用户脚本

《解锁Greasy Fork:浏览器脚本的奇妙世界》,浏览器脚本平台Greasy Fork的科普指南

本文是一篇关于浏览器脚本平台Greasy Fork的科普指南。开篇介绍了Greasy Fork的概念,即收集和分享用户脚本的在线仓库及其常见用途。接着依次阐述了使用前需安装脚本管理器的方法,在Greasy Fork上安装、使用脚本的步骤,包括搜索、安装、管理等操作,还列举了常见问题及解决办法、使用技巧与注意事项。结尾总结,鼓励读者大胆尝试,利用其定制浏览器功能,享受便利的同时保障网络安全。

userscripts:与Greeasy Fork和OpenUserJS同步的Greasemonkey脚本存储库

RGdoi 用于将Researchgate中的DOI链接转换为超链接的脚本。 安装 从以下存储库之一安装:

user script

User Script<br />tomorrow.cyz@gmail.com<br /> <br />摘要:本文讲述浏览器技术中常用的user script。一、什么是user script<br />User scripts或者称userscripts,是用来在客户端(浏览器或者代理服务器)对特定的网页进行修改的脚本,一般用来改变页面的外观或者增加修改功能。User scripts目前常见的是用javascript书写的脚本。<br />最著名的user scripts是AdBlock,帮助用户拦截广告

红心地瓜的专栏 1万+

UserScript(用户脚本)在Firefox、Google Chrome、Opera、IE6-9等不同浏览器上的使用

UserScript(用户脚本)在Firefox、Google Chrome、Opera、IE6-9等不同浏览器上的使用 2009年6月27日 周六 05:35 | 发布者: tomchen1989 | 打印                         用户脚本UserScript)是一种强大的客户端(浏览器)Javascri

pgmsoul的专栏 8230

keepalived报错WARNING - default user ‘keepalived_script‘ for script execution does not exist

Keepalived在运行时遇到一个警告,指出用于脚本执行的默认用户不存在且script_security未启用。解决方案是向global_defs段添加script_user和enable_script_security配置,指定脚本执行用户并开启安全检查,然后重启Keepalived服务。在配置文件中添加运行健康检查脚本的用户或者组。注:重启keepalived查看,报错已消除。

beck_li的博客 1066

keepalived报错:WARNING - default user ‘keepalived_script‘ for script execution does not exist - please

script_user root enable_script_security

青梅煮酒 3545

Oracle Apps Script to create a new User Login Account

Oracle Apps Script to create a new User Login Account--CREATE a new user account DECLARE p_user_name VARCHAR2 (200) := 'PTIAN'; p_owner VARCHAR2 (200) := NUL

田攀的日志 3650

JavaScript用武之Google Chrome Extension & User Script

Google Chrome Extension 1. 可供查看的文档 Google Extension的官方文档, https://developer.chrome.com/extensions/index.html 详尽的说明,大量的例子,详尽的chrome API。 国内有拿chromium开源project来开发的360极速浏览器,它的技术文档: http://open.

4173

User Script Sandboxing作用 及 在iOS项目中获取GitCommitHash

设置为。这个设置控制了 Xcode 脚本的沙盒限制,默认情况下,Xcode 会将脚本放入沙盒环境中,限制其访问文件系统的权限,尤其是对某些目录(例如项目文件夹之外的文件)进行修改时,会出现权限问题。通过将设置为,您可以允许脚本访问文件系统中的任何位置,从而避免的错误。这将允许您的脚本在构建过程中访问文件系统中的更多内容,并修改文件。/etc//System/总的来说,禁用沙盒模式是解决您遇到的权限问题的一种方法,但需要确保其他安全措施不受影响。

多分享一点点,共同进步一点点 2113

推荐开源项目:userscripts——自定义网页增强利器

推荐开源项目:userscripts——自定义网页增强利器 userscriptsUserscripts for Greasemonkey, Tampermonkey etc.项目地址:https://gitcode.com/gh_mirrors/userscri/userscripts 在这个数字化时代,我们每天都要浏览无数的网页,但并非所有网站都以最符合我们需求的方式设计。幸好有开源项目【u...

gitblog_00058的博客 688

UserScripts 的安装和配置教程

UserScripts 的安装和配置教程 1. 项目基础介绍和主要编程语言 UserScripts 是一个开源项目,旨在帮助用户创建和运行自定义的脚本,以改进和增强他们的网页浏览体验。它支持用户编写脚本来自动化网页上的重复性任务,修改网页的布局和内容,或添加新的功能。该项目主要使用 JavaScript 编程语言,这是网页开发中非常常用的脚本语言,可以与 HTML 和 CSS 配合使用,控制网页的...

gitblog_00762的博客 1153

Chrome插件(UserScript)开发教程

开发优势和大型插件相比,简易插件可以做到单文件,本地部署,方便修改等特性。下面详细介绍开发环境各类文本编辑器即可,推荐 Sublime Visual Studio Code 等代码编辑器开发流程1.创建一个js文件,文件名为[projname].user.js 2.打开文件,修改其中的内容为:// ==UserScript== // @name [插件名字,英文中文均可:文本] //

greatbody的专栏 1万+

【亲测免费】 userscripts:扩展浏览器功能的用户脚本

userscripts:扩展浏览器功能的用户脚本集 项目介绍 在现代网络浏览中,用户脚本userscripts)已成为一种流行的技术,允许用户自定义和改进他们的在线体验。userscripts 项目正是一组强大的用户脚本集合,它能够帮助用户在浏览网页时实现更多功能,增强网站交互性,甚至优化视觉效果。该项目涵盖了多种脚本,从提升社交媒体体验,到优化论坛浏览,不一而足。 项目技术分析 userscr...

gitblog_00209的博客 624

使用userscript扩展浏览器插件

所谓UserScript就是存在用户自己本地的一段脚本。要使用的话不同浏览器需要安装不同的扩展,或插件,详情见此。Chrome下可以直接使用。以下就以Chrome为例做下介绍。 1.Hello World UserScript的文件命名格式均为***.user.js,你可以试着新建名为helloword.user.js的文件,编辑文本 alert(“hello”); 保存。然后把他拖入Chro...

weixin_30843605的博客 775

让iOS Safari浏览器支持油猴脚本

让iOS Safari浏览器支持油猴脚本

Wzongming的博客 1万+

探索无限可能:UserScripts - 自定义你的网络体验

探索无限可能:UserScripts - 自定义你的网络体验 UserScripts基于Chrome下的Tampermonkey写的一些个人用户脚本项目地址:https://gitcode.com/gh_mirrors/user/UserScripts 项目简介 是一个强大的开源项目,致力于让互联网用户能够自定义和优化他们的浏览器体验。通过编写或使用现有的JavaScript脚本,你可以修改网页...

gitblog_00084的博客 1187

批量Excel文件内容组合工具.zip

批量Excel文件内容组合工具

上一篇: VirtualBox 下的ubuntu如何调整分辨率?
下一篇: shell工具——cut、tr、grep、sort、uniq、re、sed、awk
码农SW
博客等级 码龄17年 181粉丝 67原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值