Bookmarklet编写指南

Field _II 仿真 学习笔记 参考Field II的使用说明,进行了四个例子的练习。仿真程序和结果如下: PURPOSE1:Calculate the received response from all elements of a linear array and plot the responses and the summed response 【计算来自所有线性阵元的接收响应,并绘制该响应以及叠加响应。】 >> 阅读详情
前一段日子,我写了两个Bookmarklet----" 短网址生成"和" 短网址还原"。

它们用起来很方便,除了我本人之外,其他朋友也在用。第一次发布Bookmarklet,就能有用户,我挺满意的。

\

下面就是我整理的《Bookmarklet编写指南》,供自己和需要的朋友参考。

====================================================

Bookmarklet编写指南

阮一峰 编写


一、什么是Bookmarklet?

Bookmarklet是一个复合词,由Bookmark(书签)和-let(小的)构成,中文可以译成"书签工具"。

它在形式上与"书签"一样,都保存在浏览器收藏夹里。但是,它不是一个以"http://"开头的网址,而是一段Javascript代码,以"javascript:"开头。点击之后,会对当前页面执行某种操作。

它通常在网页中以链接的形式出现,就像下面这样:

  <a href="javascript:alert('hi');">xxx</a>

用户直接把这个链接拖到地址栏或收藏夹就可以用了。

\

二、Bookmarklet的优点

它有几个很显著的优点,其他技术难以取代:

1. 安装快速

  Bookmarklet的安装,就是在收藏夹中保存一段代码,一步就能完成。所有浏览器都原生支持。

2. 使用方便

  用的时候,点一下这个链接就行了。

3. 开发容易

  一段Javascript代码就是Bookmarklet的所有内容,不需要用到其他技术,比开发一个浏览器插件简单多了。

4. 跨浏览器

  所有浏览器都支持Bookmarklet。如果写的正确,同样一个Bookmarklet在各种浏览器上都能正常使用。

三、Bookmarklet的编写规则

1. 必须以"javascript:"开头

浏览器把"javascript:"当做协议看待。有了它,浏览器才知道要用javascript解释后面的代码。它的作用等同于将代码放在<script></script>之间运行。

2. 所有代码必须在同一行

因为浏览器把Bookmarklet当做网址保存,而网址是不能分行的,所以Bookmarklet也不能分行。

另一方面,网址是有长度限制的。IE的最长网址不能超过2083个字符(IE6不能超过508个字符),这也就是Bookmarklet的最长长度。压缩工具可以帮忙减少长度,但是使用下面提到的连接外部代码的方法,可以避开这个限制。

3. 使用单引号

根据Javascript的语法,单引号('xxx')和双引号("xxx")都能使用。但是由于html语言主要使用双引号,所以Bookmarklet优先使用单引号。万一遇到必须使用双引号的情况,就采用它的URL编码形式"%22"。

4. 不要污染全局变量

Bookmarklet最好不要生成新的全局变量,可以采用直接运行匿名函数的方式:

  javascript: (function(){...})();

上面式子的第一个括号,定义了一个匿名函数;最后一个括号表示立即执行这个匿名函数。所有的变量都是匿名函数的内部变量,不会生成任何新的全局变量。

如果必须设置全局变量,就取罕见的变量名(比如hd8ki2),防止与已经存在的全局变量同名。

5. 对文本和URL进行编码

为了防止出现非法字符,代码以外的文本都应该使用encodeURIComponent()函数进行编码,比如把空格变成%20。

四、Bookmarklet的编写技巧

1. 获取网页信息

获取当前页面的标题:document.title。

获取当前页面的URL: location.href。

获取当前选中的文本:

  var t;

  t = (function(){

    if (window.getSelection){

      return window.getSelection().toString();

    }else if(document.getSelection){

      return document.getSelection();

    }else if (document.selection){

      return document.selection.createRange().text;

    }

    return '';

  })();

2. 防止刷新页面

如果代码对页面有改动(比如使用了document.write),浏览器就会用一个新页面替换原有页面。所以最好用void()命令,把语句放在里面。

举例来说,下面这个Bookmarklet会导致原页面被一个新页面替代:

  javascript:document.links[0].href='http://www.ibm.com/';

加上void以后,页面就不会跳转了:

  javascript:void(document.links[0].href='http://www.ibm.com/');

3. 框架(frameset)

对于使用"框架"(frameset)的网页,那些需要操作页面的Bookmarklet一般不起作用。所以,如果发现网页使用了框架,就告诉用户Bookmarklet无法使用。

  if(frames.length > 0)

    alert('对不起,不适用于框架。');

  else{

    /* 正常情况的代码 */

  }

但是,上面的代码有一个问题,那就是行内框架iframe也包含在frames.length之中,所以必须排除iframe的影响。

  if(frames.length >
document.getElementsByTagName('iframe').length)

    alert('对不起,不适用于框架。');

  else{

    /* 正常情况的代码 */

  }

4. 连接外部javascript代码

有时,Bookmarklet必须再引入外部的Javascript代码,这就需要为当前页面添加一个script标签。

  javascript:(function(){

    var script=document.createElement('script');

    script.setAttribute('src',
'http://path/to/external/file.js');

    document.getElementsByTagName('head')[0]
.appendChild(script);

  })();

5. 添加外部函数库

如果Bookmarklet需要用到外部函数库,就必须把它也加进来。但是,前提是必须先检查一下,看看原页面是否已经加载了这个函数库。

下面以加载jQuery为例:

  if (!window.jQuery) {

    script=document.createElement( 'script' );

    script.src='http://ajax.googleapis.com/
ajax/libs/jquery/1/jquery.min.js';

    script.onload=foo;

    document.body.appendChild(script);

  } else {

foo();

  }

function foo() {

    /* ... */

  }

五、延伸阅读

  * Kalid Azad, How To Make a Bookmarklet For Your Web Application

  * Troels Jakobsen, Rules for Bookmarklets

  * Troels Jakobsen, Tips for Writing Bookmarklets

  * Siddharth, Create Bookmarklets - The Right Way

  * 2ality, Implementing bookmarklets in JavaScript



转自http://www.20ju.com/content/V170261.htm

别再用图片水印了!5种你可能不知道的文本隐写术实战 本文介绍了5种高效的文本隐写术,帮助创作者在不影响内容可读性的情况下嵌入版权信息。从零宽度字符到同形字替换,再到标点符号变形和行尾空格编码,这些技术为数字内容提供了轻量级版权保护方案,特别适用于社交媒体和电子合同等场景。 阅读详情

相关推荐

dq轴坐标系下的电路方程

dq轴坐标系下的电路方程 dq轴坐标系是一种常见的电路方程,但是再dq轴坐标系下电路元件的电压电流dq轴存在一定的耦合,本文针对三相电路推导了dq轴坐标系下的电路电路方程进行一个推导,首先先列出来派克变换的公式 派克变换 [AdAqA0]=23[cos⁡(θ)cos⁡(θ−2π/3)cos⁡(θ+2π/3)−sin⁡(θ)−sin⁡(θ−2π/3)−sin⁡(θ+2π/3)1/21/21/2][AaAbAc]\left[\begin{array}{c}A_d\\A_q\\A_0 \end{array}\ri

Mr.Young的博客 1万+

Bookmarklet - 小书签,实用浏览器小工具

导读:1 、什么是 Bookmarklet ? Bookmarklet ,大陆这边一般都称呼为小书签,台湾那边称呼为书签列小程式 or 书签小程式。它是一段 JavaScript 脚本,一般网络上的小书签都是一个链接,它的安装非常简单,只需要把链接拖到你的收藏夹里。    1.1 、详细安装步骤以推荐到豆瓣这个小书签为例子,豆瓣的“推荐到豆瓣”小书签的的安装步骤非常详细,在不同

Firefoxboy的空军基地 1960

Gazebo仿真平台模型搭建与修改

ROS里踩过的坑(一)Gazebo仿真平台模型搭建与修改文件讲解Models 文件World文件Launch文件模型编辑可视化编辑配置文件编辑模型展示如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出...

Redglass的博客 1万+

书签 JavaScript(Bookmarklet)详解

Bookmarklet 是保存在浏览器书签里的“URL”,但以开头,点击后会在当前页面上下文里执行那段 JavaScript。它不需要扩展安装权限,常用于快速辅助操作:提取信息、改页面样式、批量打开链接、调用 API 等。它本质是“在当前页面里执行一段脚本”。

askein的博客 2345

coze+飞书多维表格,批量分析小红书笔记,关键还能获取图片(附保姆级教程)

通过coze工作流,一键同步小红书账号和笔记链接到飞书多维表格,效率飞升~

qq_24403067的博客 4174

Camera Sensor接口协议全解析(六)聚焦onsemi HiSPi接口的技术突破与应用实践

摘要: Onsemi HiSPi是一种高速并行接口协议,专为高分辨率图像传感器设计,具备1600 Mbps传输速率、低功耗和高兼容性特点。通过对比DVP、MIPI CSI-2等主流协议,HiSPi在工业/医疗领域表现突出,支持动态功耗控制、多ROI和CRC校验。其创新架构包含多PHY设计,提供分组SP、流SP等多种工作模式,满足灵活传输需求。实际应用中,HiSPi在PCB缺陷检测(5μm精度)和液晶面板检测(0.3% Mura检出率)等场景展现卓越性能,成为高速成像领域的关键技术。

GateWorld的博客 1435

浏览器 bookmarklets 如何安装 和 使用

什么是Bookmarklet?(下面有补充) Bookmarklet ,一般都称呼为小书签。它是一段 JavaScript 脚本,一般网络上的小书签都是一个链接,它的安装非常简单,只需要把链接拖到你的收藏夹里。 Bookmarklet的优势? 1.同时适用于各种浏览器 Bookmarklet可以同样作用于当前各种浏览器。一般一个Bookmarklet,可以直接作用在Chrome,Fir

xiongzhengxiang的专栏 1683

GPS定位不准?可能是GDOP在作怪!手把手教你优化卫星几何分布

本文深入解析了GPS定位精度不佳的常见原因——几何精度因子GDOP。通过剖析卫星几何分布对定位误差的放大效应,文章提供了从理解GDOP、PDOP、HDOP等关键指标,到使用专业APP实时诊断卫星天空图,再到利用在线工具提前规划最佳定位时机的完整实战指南。旨在帮助户外爱好者、无人机飞手及专业用户主动优化卫星几何条件,从而显著提升定位可靠性。

weixin_29062823的博客 305

15个前端开发/网页设计师必备的Bookmarklet

15个前端开发/网页设计师必备的Bookmarklet   Bookmarklet(书签工具)是节省网页设计/前端开发时间的最佳工具。仅需点击一下,它就能提供很多信息或帮助。Bookmarklet是使用一段Javascript代码编辑而成的书签,当你

CSS fly 1390

2024年数字IC秋招-大疆-数字芯片开发工程师-笔试题

笔试题型:选择题 + 简答题笔试平台:大疆创新(电脑监控)笔试时间:90min做题感受:知识面覆盖很广,很多题目不会做(1) 什么是功耗优化中的DVFS技术?(2)降低功耗的原理是什么?(3)一般工作流程是怎样的?(4)必须的硬件模块有哪些?

qq_42135020的博客 2665

Unreal Engine开发:角色动画与状态机_动画混合:通过混合节点实现平滑动画过渡

动画混合是提升游戏动画质量的关键技术之一。Unreal Engine提供了多种混合节点,包括BlendSpace1D、Blend Two By Bool、Blend Two By Alpha和Sequencer,每种节点适用于不同的场景。通过合理使用这些节点,可以实现平滑、自然且高效的动画过渡效果。此外,遵循最佳实践和高级应用技巧,可以进一步优化动画质量和性能。希望本节内容对你在Unreal Engine中实现动画混合有所帮助,使你的游戏角色动作更加流畅和自然。

chenlz2007的博客 1245

[转] Bookmarklet(书签工具)编写指南

为什么80%的码农都做不了架构师?>>> ...

weixin_33830216的博客 279

[Dify实战] OA 公文排版助手:自动格式化、编号、生成摘要-带配套资源

摘要: Dify 公文排版助手通过自动化解决公文处理中的格式混乱、编号错漏等问题。支持标题层级自动编号、摘要生成、要素补全等功能,输出标准化Markdown格式。核心流程包括输入原文、智能识别、自动排版与要素输出,适用于通知、纪要等场景。实施需统一模板规则,规范输入格式,并通过试跑优化纠错率与处理效率。关键价值在于减少人工返工,提升排版一致性,未来可对接OA系统实现全流程自动化。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 471

在chrome浏览器编写一个复制链接的js脚本书签 (Bookmarklet)

最近发现一段js脚本,放到chrome浏览器的书签栏里,点击一下就可以执行一些操作。 后来找一找,发现原来它是有个特定的名字,叫做:Bookmarklet 通过这个名字,可以在网上搜到各种有意思的脚本。也有编写教程。 这里先附上别人的编写指南,可以简单了解一下: Bookmarklet编写指南 - 前端博客 - 博客园 https://www.cnblogs.com/wpbars/p/3345942.html 里面就是一些Bookmarklet编写最基础的格式,想自己写的可以学习学习。 然后

willgon的专栏 2359

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Bookmarklet

http://bookmarklets.com/http://www.ruanyifeng.com/blog/2011/06/a_guide_for_writing_bookmarklet.html

a19576的专栏 298

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

WhatFont-Bookmarklet 安装和配置指南

### 项目基础介绍 WhatFont-Bookmarklet 是一个用于检测网页上元素所使用的字体的 JavaScript 脚本。它可以帮助开发者快速识别网页上使用的字体,无需查看源代码或开发者工具。该项目的主要功能是通过一个书签工具(Bookmarklet)来实现字体检测。 ### 主要编程语言 该项目主要使用 JavaScript 编写,同时也包含少量的 CSS 用于样式控制。 ## 2...

gitblog_07322的博客 509

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

bookmarklet 书签小程序

bookmarklet 简单学习1,弹出内容 1,弹出内容 javascript:(function(){alert('hello');})() 参考: Chrome扩展程序(和Bookmarklets)

mixboot 1098

【亲测免费】 Bookmarklet Maker 使用教程

Bookmarklet Maker 使用教程 项目介绍 Bookmarklet Maker 是一个开源项目,旨在帮助用户轻松创建 bookmarklet。Bookmarklet 是一种可以添加到浏览器书签栏的小脚本,点击后可以执行特定的 JavaScript 代码。该项目提供了一个简单的界面和工具,使用户无需深入了解 JavaScript 编程即可创建自定义的 bookmarklet。 项目快速启...

gitblog_00519的博客 650

让bookmarklet助力你的web测试

在本文中,我们将深入bookmarklet的世界,探究它们是什么,以及它们如何增强你的web测试能力。此外,我还将分享我对其定制和使用的见解。

software_test010的博客 746

jQuerify Bookmarklet

Reference: jQuerifyBookmarklet, Updated jQuery Bookmarklet and Better, Stronger, Safer jQuerify Bookmarklet What is jQuerify Bookmarklet? A jQuerify Bookmarklet is a hyperlink that can be dragged

三生石上 717

Bookmarklet Gen 实战指南:在 YOURLS 中将 JavaScript 压缩为可书签化的 Bookmarklet 链接

Bookmarklet Gen 是一个轻量级的 PHP 库,核心能力是把"可读的 JavaScript 代码"一键转换为可直接拖入浏览器书签栏、以 `javascript:` 协议执行的 Bookmarklet 链接。在 YOURLS 项目中,它被封装为 `yourls_make_bookmarklet()` 函数,支撑管理后台"工具"页中 Shorten、Instant Shorten、Cust

gitblog_00214的博客 194

JavaScript FAQ(二十三)—— Bookmarklet

二十、Bookmarklet 1、什么是Bookmarklet?(What's a Bookmarklet?)Q:什么是Bookmarklet?A:Bookmarklet是整个都被包含在超链接URL中的一小段JavaScript程序。(JavaScript URL就是这个样子:。)多数浏览器允许用户添加这些JavaScript URL书签,就像添加其他超链接一样。bookmarklet这个词是由S

mydeman的学习日志 2012

开源项目推荐:Bookmarklet

开源项目推荐:Bookmarklet Bookmarklet 是一个使用 Node.js 开发的开源项目,主要使用 JavaScript 作为其编程语言。 1. 项目基础介绍 Bookmarklet 是一个服务器端的书签编译器,它支持将任何 JavaScript 文件编译成书签,同时进行代码压缩(使用 uglify-js)和包装成自执行函数。此外,它还支持类似 Greasemonkey 用户脚本元...

gitblog_00122的博客 982
上一篇: PHP遍历目录和文件
下一篇: 手机充电指南
jiestyle21
博客等级 码龄17年 36粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值