我是否可以使用javascript字符串中的内容触发完整的网页重新加载

Can I trigger a complete web page reload with content from a javascript string?

本文关键字:网页 新加载 加载 可以使 是否 javascript 字符串      更新时间:2023-09-26

这是ajax的"替代流"问题之一。通常我希望我的 ajax 请求返回页面的一部分。但有时它可能会返回带有 html、head 和 body 标签的完整页面。

当我从 ajax 请求返回时,我可以检测这是否是一个完整的页面,但是是否可以根据我拥有的字符串内容触发整页重新加载(具有完整的事件周期)?

(是的,我尝试替换 body 元素,但这不会给我事件,也不允许我更改头部块中的内容)

任何框架引用都可以

我认为不可能直接做。

您最好将 HTML 保存在某个地方并发回一个可以检索它的 URL,然后使用 location.href = ... ;

您可以根据 AJAX 请求的 HTTP 状态代码决定如何处理该请求。

如果您收到 301("永久移动"),您可以使用 window.location 进行重定向:

new Ajax.Request(url, {
  method: 'get',
  // status 200: yadaa
  onSuccess: function(transport) {
    // doSomething
  },
  // status 301: moved permanently
  on301: function(transport){ 
    window.location = transport.responseText;
  }
});

至少在 Firefox 中,你可以使用 window.location 属性。位置对象包含有关文档 URL 的信息,并提供更改该 URL 的方法。还可以分配给此属性以加载另一个 URL。

文档中的示例:

Replace the current document with the one at the given URL:
function goMoz() { 
   window.location = "http://www.mozilla.org";
} 
// in html: <button onclick="goMoz();">Mozilla</button>

window.location = "same-url-as-im-at.aspx";

...?

要直接使用 HTML 文档来做到这一点,如果我是你,我会拼命避免,因为你在原始问题中略读了

......