If you set the innerHTML of a <div> to innerHTML = '<a href="Something/C%23">C#</a><br />';
实际上“渲染”似乎是:
<div>
<a href="Something/C#">C#</a><br />
</div>
什么是逃避这个的正确方法,以便链接保持“Something / C%23”?
更新:
我注意到这里有一个奇怪的小东西。如果使用函数来构建链接。不需要额外的%25逃逸。奇怪的。
恩。
function buildLink(tg, nm) {
return '<a href="Something/' + tg + '">' + nm + '</a><br />';
}
答案 0 :(得分:3)
值得注意的是,许多浏览器会将“Something/C%23
”的链接呈现为“Something/C#
”作为“友好”网址。使用Firebug或类似工具检查div
,确保其实际设置不正确。
如果是这样,那么您需要将百分号转义为%25
:
innerHTML = '<a href="Something/C%2523">C#</a><br />';
答案 1 :(得分:2)
试试这个:
<a href="Something/C%2523">C#</a><br />
将“%
”展开为“%25
”即可获得所需内容。然后将“%25
”转换回百分比字符,后续的23
不会被重新解释。
答案 2 :(得分:0)
逃避百分比本身,你应该拥有它。
innerHTML = '<a href="Something/C%2523">C#</a><br />';
答案 3 :(得分:0)
实际上“渲染”似乎是:
<a href="Something/C#">C#</a><br />
不。如果您将鼠标悬停在链接上,Firefox会在状态栏中告诉您链接转到“C#”,但它正在撒谎。实际上点击链接,你最终会在“C%23”(它出现在地址栏中)。
什么是逃避这个的正确方法,以便链接保持“Something / C%23”?
你第一次就做对了。 “Something / C%2523”编码过多。
我注意到这里有一个奇怪的小东西。如果使用函数来构建链接。不需要额外的%25逃逸。
在某种功能中不会影响它。 会影响它,并且可能会让您感到困惑,如果您使用地址栏输入javascript:URL作为测试机制。 javascript:URL仍然是URL,其中的任何%-encoding将在JS解释器查看代码之前撤消一步。如果您使用JS字符串文字转义,则不会遇到此问题:
javascript:alert(document.body.innerHTML='<a href="Something/C\x2523">C#</a>')