【发布时间】:2020-04-29 12:12:51
【问题描述】:
与问题一样,在发出请求后和加载页面内容后,如何使下面给出的代码更改浏览器中的 URL? 我自己不知道怎么做,我已经尝试了好几天了。
如果可能,如何使从新页面加载的 JS 脚本(在请求之后)工作(innerHTML 不会解释为脚本的结果)。
document.addEventListener('click', function(event) {
if (event.target.tagName !== "A" || !event.target.href) return;
document.body.style.opacity = 0;
event.preventDefault();
document.body.addEventListener("transitionend", function() {
var res = new XMLHttpRequest();
res.addEventListener("load", function() {
if (res.status != 200) {
console.log(`Error ${res.status}: ${res.statusText}`);
} else {
document.querySelector('html').innerHTML =
this.response;
}
});
res.open("GET", event.target.href);
res.send();
});
});
如果需要更多说明,请在下方评论。
【问题讨论】:
-
这能回答你的问题吗? How to change url in address bar?
-
先为旧页面创建一些 HTML 并立即更改位置没有多大意义。无论如何,如果您想从响应文本中执行脚本,首先您必须将内容放入
documentFragment。然后创建新的空脚本元素,获取片段中已存在脚本的text属性,并将该文本放入新创建的脚本元素。然后将新创建的脚本元素附加到片段,最后将片段附加到document.body。请注意,您必须保留原始的html标记。或者干脆使用常规形式... -
@LuketheGeek 不,不是这样,我在 XHR 上寻找如何做到这一点,但我没有找到解决方案
-
@MAJO 你使用 XHR 停留在当前页面,尝试使用 XHR 替换整个页面的内容是没有用的(
document.querySelector('html').innerHTML = ..显示目标)。如果您需要加载新页面,请使用常规表单发送请求。 -
好吧,你已经被建议了,但祝你好运......
标签: javascript url animation xmlhttprequest