gpt4 book ai didi

javascript - IE 中奇怪的 javascript 解码行为

转载 作者:行者123 更新时间:2023-11-30 10:55:00 26 4
gpt4 key购买 nike

我在 IE8 和 IE7 中使用非英文字符运行以下 html 片段(我们尝试了希伯来语和中文),但第二个链接无法正常工作。
警告框中显示的文本被损坏。这种情况出现在 IE8 和 IE7 中,但不会出现在 firefox 中。它不依赖于 Windows 的区域设置。

这是 html 片段(为简洁起见省略了 html 页眉和页脚,内容类型为“text/html;charset=utf-8”,响应标题也是如此):

<p>
<a href="javascript:alert('abשלוםab')">link with English and Hebrew text</a>
<a href="javascript:alert('ab%D7%A9%D7%9C%D7%95%D7%9Dab')">same text, url encoded</a>
</p>

这是点击第二个链接时弹出的警告框:

alt text

我知道“שלום”的字符串在 utf-8 中编码为 8 个字节,因此有 8 个 %NN 项,并且在警告框中也有 8 个奇怪的字符。问题是,如何让 IE 识别出这是 utf-8 编码的文本,就像 firefox 一样?

更新:

完整的 html(最小示例)可用 here .
我尝试了 decodeURIdecodeURIComponentunescape,但没有成功。将链接从 href 移至 onclick 即可解决问题。我的问题是有些内容是从我无法控制的其他来源生成的,我最终在 href 属性中得到了 javascript 链接。

最佳答案

由于 URI 转义不能为您可靠地工作,我想知道您是否可以改用 JavaScript Unicode 转义更好?例如。 (在 JavaScript 字符串中),\u1234 其中 1234 是要显示的 Unicode 代码点。这也有在 javascript: URI 之外工作的优势,以防您将代码移动到 JavaScript 文件或其他东西。

因此根据您对代码点的回复,它看起来像这样:

<a href="javascript:alert('ab\u05E9\u05DC\u05D5\u05DDab')">same text, using JavaScript escapes</a>

...在我的测试中看起来像这样:

IE7:IE7 result image http://www.imagechicken.com/uploads/1269198244050004700.png

IE8:IE8 result image http://www.imagechicken.com/uploads/1269198387032872100.png (通过 RD,因此是基本外观)

Chrome :Chrome result image http://www.imagechicken.com/uploads/1269198434021743700.png

火狐:Firefox result image http://www.imagechicken.com/uploads/1269198440077244000.png

(由于某种原因,最后一个代码点似乎存在一些分歧。)

关于javascript - IE 中奇怪的 javascript 解码行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2487459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com