可能平时有这样的一些小需求,对于一些特定的网页,使用频度比较多且要录入数据的页面,数据存在某个地方,但是又不得一笔的去录,一笔两笔还好,多了就很不爽了,能不能自动填充这个已有的数据。对于IE浏览器微软是提供了一些方案来处理的比如说开发插件,但这个不是谁都能会的,但是javascript会写的人就比较多了。
下面的就是我处理这类小问题的处理方法,记录一下同时也分享给有同样需求的小伙伴:
- 向IE中增加按钮,上下文菜单中增加自定义菜单。
- 用javascript编写菜单事件。
增加按钮、上下文菜单
向IE中增加按钮菜单,通过注册表中增加HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt注册表项就能实现。
参考了上述官方文档,学差写个注册表文件.reg,如果你不愿看官方参考文档没关系,直接按你的要求改下面的注册表文件也行。
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\&自定菜单] @="%SCRIPT_DIR%\\script.htm" "Contexts"=dword:00000023 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions\{878EC0C9-AAAD-4331-9B3A-2D8BA93AEAD2}] "CLSID"="{2FBA04EE-3024-11D2-8F1F-0000F87ABD16}" "Default Visible"="Yes" "Script"="%SCRIPT_DIR%\\script.htm" "MenuText"="自定菜单" "ButtonText"="自定菜单" "HotIcon"="%SCRIPT_DIR%\\autofill.ico" "Icon"="%SCRIPT_DIR%\\autofill.ico"自定义菜单和%SCRIPT_DIR%要换成你自己的菜单名和脚本所在目录,可以定制菜单名和图标。
编写菜单响应事件
参考: 脚本参考官方文档
<script type="text/javascript"> // 获取window对象. var oWindow = window.external.menuArguments; // 获取document对象 var oDocument = oWindow.document; // 示例代码在打开的当前页面处插入文本内容 // Get the selection from oDocument. // in oDocument. var oSelect = oDocument.selection; // Create a TextRange from oSelect. var oSelectRange = oSelect.createRange(); // Get the text of the selection. var sNewText = oSelectRange.text; // If nothing was selected, insert some text. if (sNewText.length == 0){ oSelectRange.text = "INSERT TEXT"; } // 有document对象操作表单... // 在head增加新的css或是javascript var head=oDocument.getElementsByTagName("head")[0]; var reqscript = oDocument.createElement("script"); reqscript.src = "url..."; </script>