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 />';
}
有帮助吗?

解决方案

试试这个:

<a href="Something/C%2523">C#</a><br />

展开<!>“; % <!>”; to <!> quot; %25 <!> quot;你得到了你想要的东西。然后<!>“; 23 <!>”;转换回百分比字符,后续的<=>不会被重新解释。

其他提示

值得注意的是,许多浏览器会呈现指向<!>“; Something/C%23 <!>”的链接; as <!> quot; Something/C# <!> quot;作为<!>“友好的<!>”; URL。使用Firebug或类似工具检查div以确保它实际设置不正确。

如果是这样,那么你需要将百分号转义为%25

innerHTML = '<a href="Something/C%2523">C#</a><br />';

逃避百分比本身,你应该拥有它。

innerHTML = '<a href="Something/C%2523">C#</a><br />';
  

实际上“渲染”似乎是:

<a href="Something/C#">C#</a><br />

不。如果您将鼠标悬停在链接上,Firefox会在状态栏中告诉您链接转到<!>“C#<!>”;但它正在撒谎。实际上点击链接,你最终会在<!>“C%23 <!>”; (它会出现在地址栏中。)

  

什么是逃避这个的正确方法,以便链接保持<!>“Something / C%23 <!>”; ?

你第一次就做对了。 <!> QUOT;东西/ C%2523 QUOT <!>;编码过多。

  

我注意到这里有一个奇怪的小东西。如果使用函数来构建链接。不需要额外的%25逃逸。

在某种功能中不会影响它。 会影响它,并且可能会让您感到困惑,如果您使用地址栏输入javascript:URL作为测试机制。 javascript:URL仍然是URL,其中的任何%-encoding将在JS解释器查看代码之前撤消一步。如果您使用JS字符串文字转义,则不会遇到此问题:

javascript:alert(document.body.innerHTML='<a href="Something/C\x2523">C#</a>')
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top