Bookmarklet编写指南

“挑战杯”大赛“揭榜挂帅”赛道-baseline解析 在这个脚本中,txt文件的保存路径为'yolov7/datasets/Fatigue_driving_detection/txt_labels/',而xml文件的路径为'./label_xml/'。标注图片后的产物是会给每一个图片对应生成一个xml格式的文件,但是如果要用yolo框架去训练模型,输入的数据必须是txt格式,因此这里有一步转换格式的过程。注意看:obs这里有三个文件夹,第一个是关键帧的文件夹A,第二个是标注时输出的位置为文件夹B,第三个是智能标注后和手动标注的合集文件夹C。 阅读详情
前一段日子,我写了两个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

温度PID控制PLC程序 温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值 立即下载

相关推荐

Isaac Sim仿真平台学习(2)系统架构

isaac sim系统架构

weixin_75067193的博客 2698

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

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

Firefoxboy的空军基地 1960

LIN总线CAPL函数实战——动态控制报文发送(linDeactivateSlot与linActivateSlot)

本文深入解析了LIN总线测试中动态控制报文发送的核心CAPL函数linDeactivateSlot与linActivateSlot的实战应用。通过详细拆解函数参数、生效范围及限制,并结合故障注入、功耗测试等实际场景的代码示例,指导测试工程师在仿真LIN主节点时,灵活调度报文发送,实现高效自动化测试。

weixin_29255731的博客 348

书签 JavaScript(Bookmarklet)详解

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

askein的博客 2345

虚拟零售智能客服架构设计:如何用大模型实现多轮对话与精准推荐?

想象一下,当你在一个电商平台购物时,遇到了一个能像你的专属导购一样,不仅能听懂你模糊的需求(“我想买一件适合夏天去海边玩,又能兼顾日常通勤的裙子”),还能记得你之前提到的尺码偏好和预算,甚至在你犹豫时,主动推荐几款符合你风格且正好有促销活动的商品——这不再是科幻电影中的场景,而是基于大语言模型(LLM)技术的新一代虚拟零售智能客服能够提供的体验。这一层是我们架构设计的重点,会在后续章节详细展开。如基于CRF、RNN的模型,或基于规则的状态更新,通常需要大量标注的对话状态数据,且对新领域、新槽位的适应性差。

Java大师兄的博客 1589

《用 R 探索医药数据科学》目录(持续更新,已超 250 万字)|订阅前说明

我们重磅推出《用 R 探索医药数据科学》专栏!本文作为专栏【订阅后首读】的核心内容,堪称开启学习之旅的 “入门钥匙”,也是整个专栏最关键的一篇指引文。文中不仅完整呈现了专栏 9 大核心篇章 + 问答板块的详细目录,更囊括了订阅后必知的核心要点 —— 从阅读设备、实操工具的使用建议,到学习路径、更新规则的清晰说明,再到问题反馈、感悟记录的实用方法,一站式帮你摸清专栏框架、找准学习方向。建议各位订阅者务必认真阅读、吃透内容,这能让你后续的学习更高效、少走弯!

MD Code 1万+

浏览器 bookmarklets 如何安装 和 使用

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

xiongzhengxiang的专栏 1683

开源大语言模型GLM-5:从架构解析到部署微调全指南

大语言模型(LLM)作为当前人工智能领域的核心技术,通过海量数据预训练获得强大的语言理解和生成能力。其核心原理基于Transformer架构,通过自注意力机制捕捉长距离依赖关系,在通用语言任务上展现出卓越性能。这一技术价值在于为开发者提供了强大的基座模型,能够通过微调快速适配特定领域需求,显著降低AI应用开发门槛。在实际应用场景中,大模型被广泛用于智能对话、代码生成、内容创作等任务。本文以开源项目GLM-5为例,深入探讨其架构特点,并详细介绍了如何使用LoRA技术进行参数高效微调,以及通过量化优化实现模型在

weixin_28683165的博客 350

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

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

CSS fly 1390

CMOS 图像传感器——Skipping 和 Binning 模式

Skipping 和 Binning 模式

沧海一升的博客 6003

摆脱英文束缚!群晖Transmission4.0.4全新中文界面攻略

在群晖安装完官方Transmission4.0.4套件后,界面是英文状态的,不太好用。但是按照网上分享的原来4.0以前版本的方法更新UI又失败,所以自己搞了下成功了,分享给需要的朋友。

XiaoqiangClub的博客 5212

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

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

weixin_33830216的博客 279

手把手教你用git上传项目到GitHub(图文并茂,这一篇就够了),相信你一定能成功!!

GitHub是基于git实现的代码托管。git是目前最好用的版本控制系统了,非常受欢迎,比之svn更好。 GitHub可以免费使用,并且快速稳定。即使是付费帐户,每个月不超过10美刀的费用也非常便宜。 利用GitHub,你可以将项目存档,与其他人分享交流,并让其他开发者帮助你一起完成这个项目。优点在于,他支持多人共同完成一个项目,因此你们可以在同一页面对话交流。 创建自己的项目,并备份,代码不需要保存在本地或者服务器,GitHub做得非常理想。 学习Git也有很多好处。他被视为一个预先维护过程,你可以按自己

左手の明天的博客 3万+

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

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

willgon的专栏 2359

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Bookmarklet

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

a19576的专栏 298

efm32 入门.pdf

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

WhatFont-Bookmarklet 安装和配置指南

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

gitblog_07322的博客 509

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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、付费专栏及课程。

余额充值