【发布时间】:2019-09-20 23:44:15
【问题描述】:
我先说我一般不熟悉 Javascript。我在 HTML 页面中添加了一些简单的内联 javascript,以根据是或否弹出窗口来操作 URL。
前提很简单。当页面加载时,会有一个弹出窗口(在 onload= 中调用函数),要求用户确认他们的提交。如果他们点击是,页面会重新加载相同的 URL,但 URL 参数不同。看起来很奇怪,但我正在使用的应用程序只打印 HTML(新参数将阻止它重新加载确认弹出窗口)。该代码适用于我尝试过的所有浏览器(Chrome、Firefox、Opera、Edge),但在 IE11 中不起作用。确认弹出窗口永远不会出现,它只是正常呈现内容。没有错误。
我已确保该页面允许在 Internet 选项中使用 javascript
这是我的网址格式:myurl?conf=false
这是我的代码:
function checkIfConfirmed() {
var url_string = window.location.href;
var url = new URL(url_string);
var isConfirmed = url.searchParams.get("conf");
if (isConfirmed == "false") {
confirmStatus(isConfirmed);
}
}
function setGetParameter(paramName, paramValue) {
var url = window.location.href;
var hash = location.hash;
url = url.replace(hash, '');
if (url.indexOf(paramName + "=") >= 0) {
var prefix = url.substring(0, url.indexOf(paramName + "="));
var suffix = url.substring(url.indexOf(paramName + "="));
suffix = suffix.substring(suffix.indexOf("=") + 1);
suffix = (suffix.indexOf("&") >= 0) ? suffix.substring(suffix.indexOf("&")) : "";
url = prefix + paramName + "=" + paramValue + suffix;
} else {
if (url.indexOf("?") < 0)
url += "?" + paramName + "=" + paramValue;
else
url += "&" + paramName + "=" + paramValue;
}
window.location.href = url + hash;
var xhr = new XMLHttpRequest();
xhr.open('GET', url + hash, true);
xhr.send();
}
function confirmStatus(isUnconfirmed) {
if (confirm("Are you sure you want to proceed?")) {
setGetParameter("conf", "true");
} else {
close();
}
}
<BODY onload="checkIfConfirmed()">
<!-- The content to be displayed -->
</BODY>
【问题讨论】:
-
window.location.href = url + hash; var xhr = new XMLHttpRequest(); xhr.open('GET', url + hash, true);。 -
url.searchparams 也是 IE 不支持的一种
-
[XMLHttpRequest 文件上传在 IE11 中不起作用]的可能重复项(stackoverflow.com/questions/38590353/…)
-
可能的解决方法:放弃 IE11 支持 ;)
标签: javascript