在IE11中,使用window.location
,window.location.href
和document.location
都具有相同的效果。如果您设置的网址中的查询字符串在任何位置包含©
,则会将其更改为©
。
有关如何解决此问题的任何想法?
要查看此问题的演示,请将以下文本保存到名为test.html
的文件中,然后在IE11中将其打开。 (这个bug也可能影响其他版本;我不知道。)
<!DOCTYPE html5>
<html>
<body>
<div><a href="#" class="broken">Broken in IE11</a></div>
<div><a href="#" class="works">Works in IE11</a></div>
<p>Query string: <pre id="queryString"></pre></p>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
var queryString = (function() {
if (!window.location.search) {
return({}); // return empty object
}
var parms = {};
var temp;
var items = window.location.search.slice(1).split("&"); // remove leading ? and split
for (var i = 0; i < items.length; i++) {
temp = items[i].split("=");
if (temp[0]) {
if (temp.length < 2) {
temp.push("");
}
parms[decodeURIComponent(temp[0])] = decodeURIComponent(temp[1]);
}
}
return(parms);
})();
$(function() {
$('#queryString').text(JSON.stringify(queryString));
$('.broken').on('click', function(e) {
e.preventDefault();
window.location = "test.html?q=test©=true";
});
$('.works').on('click', function(e) {
e.preventDefault();
window.location = "test.html?copy=true&q=test";
});
});
</script>
</body>
</html>
答案 0 :(得分:1)
问题似乎影响所有IE版本,并且没有允许确切URL工作的修复或解决方法;你必须改变网址。
查询字符串中的URL编码名称和值就足够了。修改上面的示例以使用%63opy
而不是copy
会导致加载正确的网址。