什么时候需要转义JavaScript bookmarklet?

什么时候需要转义JavaScript bookmarklet?,javascript,escaping,bookmarklet,Javascript,Escaping,Bookmarklet,我制作的bookmarklet似乎总是工作得很好,即使我没有转义它们,那么为什么bookmarklet生成器喜欢转义特殊字符,如空格到%20?如果使用浏览器书签属性编辑器将代码复制/粘贴到书签中,则除了换行符和百分号之外,不需要编码任何内容。但是,事实上,Firefox(可能还有其他浏览器)会为您编码空间。如果保存后再次检查属性,您将看到它们已编码。您需要对换行符进行编码,因为书签只能是一行。您需要对百分号进行编码,因为浏览器希望百分号始终表示编码集中的第一个字符。如果将bookmarklet放

我制作的bookmarklet似乎总是工作得很好,即使我没有转义它们,那么为什么bookmarklet生成器喜欢转义特殊字符,如空格到
%20

如果使用浏览器书签属性编辑器将代码复制/粘贴到书签中,则除了换行符和百分号之外,不需要编码任何内容。但是,事实上,Firefox(可能还有其他浏览器)会为您编码空间。如果保存后再次检查属性,您将看到它们已编码。您需要对换行符进行编码,因为书签只能是一行。您需要对百分号进行编码,因为浏览器希望百分号始终表示编码集中的第一个字符。如果将bookmarklet放在
a
标记的
HREF
属性中的网站上,同样的规则也适用,但您还必须对任何双引号进行HTML编码或URL编码


很多书签制作商都会使用encodeURIComponent,它的编码比严格要求的要多,但可能会被认为更“正确”。

谢谢!因此,我将使用
js.split('%').join('%25')
,而不是使用
encodeURIComponent(js)
。不需要对换行代码进行编码,因为我先将JS编码成一行,也不需要手动对双引号进行编码,因为这样做时:
anchorEl.href='javascript:alert(“hi”);'浏览器自动转义
s转换为
%22
s。在您的href示例中,您需要对任何单引号进行URL编码或斜杠转义。是的,但在我的实际代码中,我从未将JS转换为字符串文字,因此不需要它。请随意看看我一直在玩的东西:这是一个简单的书签,可以改变HTML5视频的速度。当您在JS面板中键入时,bookmarklet
href
会自动更新。bookmarklet链接在FF中不起作用。看起来uglify正在破坏外部的自动执行函数包装器。我自己对代码进行了改进并进行了测试。我不知道HTML5范围的输入类型。整洁的你看到这个了吗?好了,谢谢!我确定: