我正在尝试检索某些HTML元素的文字内容,没有编码&符号。我似乎找不到办法做到这一点。
一个例子: 如果我设置了URL:
http://www.google.com?q=foo&bla=bar&kitties=yay
在锚标记上,并尝试使用innerHTML再次检索它,或者使用XMLSerializer.serializeToString(),URL(作为href)返回为:
http://www.google.com?q=foo&bla=bar&kitties=yay
(第一个非编码的&符号已被编码,编码的&符号未更改[仍然编码,不是双重编码])
我知道浏览器给我的这个编码版本是正确的(ed)HTML,并且通常不会导致问题,但我有人看着这些不理解&amp; amp; amp;是&amp;,谁将复制并粘贴URL以进行验证。我也不认为解码URL是安全的,因为这些URL通常在末尾编码了网址,这些网址应保持编码状态,并且它们似乎不会被双重编码。我认为这也是错误的,因为URL已得到纠正,而不是“编码”。我还需要HTML标记部分(例如<a>
),因此不能只获取nodeValue / innerText / textContent / data。
任何建议都得到了很好的收获 - 我会包含一个jsfiddle,但即使是编码的东西,所以它没有帮助!对不起,如果这很明显,但我被卡住了!
答案 0 :(得分:1)
如果你在JS中使用DOM做这个,你可以这样做:
var e = document.createElement('span');
e.innerHTML = 'url here';
return e.innerText; // This is your URL
答案 1 :(得分:0)
如果您为浏览器提供无效的HTML,那么它会尝试修复它。如果您然后将DOM序列化为HTML,它将为您提供固定的HTML。没有办法避免这种情况。
OTOH,大多数x-url-form编码的数据解析器将遵循the recommendation to treat semi-colons as ampersands,因此?foo=1&bar=2
将被视为与foo=1&=&bar=2
相同,因此您无需过多担心复制/粘贴。这也意味着您可以首先编写foo=1;bar=2
,而不必担心必须为HTML编码&符号。