如何在 iframe 中加载默认页面(如果预期的跨域 src 为 404)



我有一个javascript脚本,托管在我的服务器上,它通过<script src="http://myserver/myscript.js">标签添加到我不托管的站点。 打开这些站点时,脚本将启动一个模式框,用于打开我在 iframe 中托管的页面。

我知道这听起来很阴暗,但拥有这些网站的人正在为此付出代价。 这确实是合法的。

对于给定的客户,我最多可能有 5 个不同的页面。查询字符串确定在 iframe 中加载的页面。

我想包含一个默认页面(每个客户端的不同默认值(来加载,以防查询字符串变量与我为它们准备的任何页面不匹配。

我可以检查查询字符串上缺少变量,并在这种情况下打开默认值。 但是,如果 iframe 中加载的页面是 404 怎么办? 在这种情况下,如何加载默认值?

我已经通读了我能找到的所有与此相关的帖子。 我知道跨域安全风险意味着Javascript不支持这一点。 但是一些帖子提到,除了Javascript之外,可能还有使用PHP来实现它的方法。 有哪些解决方法?

我不能在外部站点上包含任何库。 我只能在外部站点上放置单个<script>标签。

我对所有内容都使用普通的 javascript(因为我无法在外部站点上包含 jquery 库(,而且现在都在一个文件中。

如果我要使用其他文件,我不确定这些文件如何协同工作。 我也需要这方面的帮助。

我相信你正在寻找PostMessage API:

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

这将允许在外部Javascript(您的客户附加到其网站的脚本(和您(拥有的(iFrame内容之间传递消息。iFrame 中的脚本可以侦听来自上方的已发布消息,反之亦然。

这样,您可以将客户端脚本设置为侦听来自 iFrame 的消息,例如 {loaded: true} ,并在发生(或未发生(时采取措施。如果 iFrame 在设定的秒数内没有回复客户端脚本的请求,那么您可以合理地相信第 404'd 页。

你能用:

iframeElement.onerror = function(){
  // do stuff
}

但是,它在较旧的浏览器中不起作用。

相关内容

  • 没有找到相关文章