JavaScript outerHTML对URL字符串进行编码

时间:2017-06-17 15:24:53

标签: javascript jquery url url-encoding url-parameters

我正在尝试将图像的src属性设置为我也在JS中生成的URL。该URL包含几个用“&”链接的参数,但是当将元素的外部HTML作为字符串值获取时,所有“&”被“& amp;取代,使URL无用。为什么会发生这种情况?我是否必须更换所有发生的事件才能修复它?

var img = $("<img>");
img.attr("src","/test?param1=1&param2=2");
console.log(img[0].outerHTML); //printing <img src="/test?param1=1&amp;param2=2">

从该对象获取src属性会显示原始字符串,所以我相信在访问outerHTML时会对该值进行编码。

1 个答案:

答案 0 :(得分:0)

这只是使用outerHTML记录img的结果,因为该函数在输出字符串之前将其序列化。在下面的示例中,我只是记录元素,您将看到图像源是正确的。此外,如果您在页面上输出图像,它也有正确的来源。

因此,除了记录输出的方式之外,您的代码没有任何问题。

var img = $("<img>");
img.attr("src","http://www.placecage.com/gif/284/196?param1=1&param2=2");
console.log(img[0]);
$("div").append(img);
<div></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>