html – 使用`javascript:`伪协议编码URL的规则?

html – 使用`javascript:`伪协议编码URL的规则?,第1张

概述是否有关于伪协议 javascript的URL的语法和编码的权威参考:? (我知道它的考虑不是很好,但无论如何它对bookmarklet很有用). 首先,我们知道标准URLs遵循以下语法: scheme://username:password@domain:port/path?query_string#anchor 但这种格式似乎不适用于此.事实上,似乎说URI而不是URL更为正确:here列出了 是否有关于伪协议 javascript的URL的语法和编码的权威参考:? (我知道它的考虑不是很好,但无论如何它对bookmarklet很有用).

首先,我们知道标准URLs遵循以下语法:

scheme://username:password@domain:port/path?query_string#anchor

但这种格式似乎不适用于此.事实上,似乎说URI而不是URL更为正确:here列出了“非官方”格式JavaScript:{body}.

那么,当嵌入HTML时,这些URI的有效字符是什么(转义/ unescape规则是什么)?

具体来说,如果我有一个JavaScript函数的代码,我想将它嵌入到JavaScript:URI中,这是要应用的转义规则吗?

当然,人们可以逃脱每个非风险的角色,但这样做会有些过分并使代码难以理解.我想只逃避必要的角色.

此外,很明显使用一些urlencode/urldecode例程对(那些用于查询字符串值)会很糟糕,例如,我们不想将”解码为空格.

解决方法 到目前为止我的发现:

首先,有一些编写有效HTML属性值的规则:但是这里标准只需要(如果属性值包含在引号中)一个任意的cdaTA(实际上是%URI,但HTML本身不会在其级别强加额外的验证:任何cdaTA都将验证).

一些例子:

<a href="JavaScript:alert('Hi!')">     (1) <a href="JavaScript:if(a > b && 1 < 0) alert(  b ? 'hi' : 'bye')">   (2) <a href="JavaScript:if(a&gt;b &amp;&&amp; 1 &lt; 0) alert( b ? 'hi' : 'bye')">  (3)

示例(1)有效.但是例子(2)也是有效的HTML 4.01 Strict.为了使它成为有效的@R_301_6000@,我们只需要转义XML特殊字符< > &安培; (示例3是有效的@R_301_6000@ 1.0 Strict). 现在,示例(2)是一个有效的JavaScript:URI吗?我不确定,但我会说不是. 从RFC 2396开始:URI受到一些额外限制,特别是通过%xx序列的escape / unescape.并且一些角色总是被禁止:
其中空格和{}#.

RFC还定义了不透明URI的子集:那些没有分层组件的URI,并且分离字符没有特殊含义(例如,它们没有’查询字符串’,所以?可以用作任何非特殊字符).我假设JavaScript:URI应该被考虑在其中.

这意味着JavaScript:URI的’body’中的有效字符是

a-zA-Z0-9  _|. !~*'();?:@&=+$,/-    %hh : (escape sequence,with two hexadecimal digits)

有一个额外的限制,它不能以/开头.
例如,这仍然会遗漏一些“重要的”ASCII字符

{}#[]<>^\

同样%(因为它用于转义序列),双引号“和(最重要的)所有空白.

在某些方面,这看起来非常宽松:重要的是要注意它是有效的(因此在解码时不应该’未转义’,作为空格).

但在其他方面,它似乎过于严格.大括号和括号,特别是:我知道它们通常是未转义的,浏览器也没有问题.

空间怎么样?作为大括号,它们不被RFC所禁止,但我认为这种URI没有问题.但是,我发现在大多数bookmarklet中它们都被转义为“”.对此有任何(经验或理论上的)解释吗?

我仍然不知道是否有一些标准函数可以使这个转义/ unescape(在主流语言中)或一些示例代码.

总结

以上是内存溢出为你收集整理的html – 使用`javascript:`伪协议编码URL的规则?全部内容,希望文章能够帮你解决html – 使用`javascript:`伪协议编码URL的规则?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1062444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存