我的服务器上托管了一个javascript脚本,该脚本已添加到我未通过<script src="http://myserver/myscript.js">
标记托管的网站中。当这些网站打开时,脚本将启动一个模式框,打开我在iframe中托管的页面。
我知道这听起来很阴暗,但拥有这些网站的人正在为此付出代价。这真的是合法的。
对于给定的客户,我最多可以有5个不同的页面。查询字符串确定在iframe中加载哪个页面。
我希望在查询字符串变量与我拥有的任何页面不匹配的情况下,加载默认页面(每个客户端的不同默认值)。
我可以在查询字符串上检查变量的LACK并在这种情况下打开默认值。但是,如果在iframe中加载的页面是404,该怎么办?在这种情况下如何加载默认值?
我已经阅读了所有与此相关的帖子。我知道跨域安全风险意味着Javascript不支持这一点。但是有些帖子提到除了Javascript之外,还有可能使用PHP实现它。有哪些解决方法?
我不能在外部网站上包含任何库。我只能在外部网站上放置单个<script>
标记。
我正在使用普通的,普通的javascript来处理所有事情(因为我不能在外部网站上包含一个jquery库),而且它现在都在一个文件中。
如果我要使用其他文件,我不确定这些文件是如何一起工作的。我也需要帮助。
答案 0 :(得分:1)
我相信您正在寻找PostMessage API:
https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
这将允许在外部Javascript(客户端附加到其网站的脚本)和您的(OWNED)iFrame内容之间传递消息。 iFrame中的脚本可以监听上面发布的消息,反之亦然。
通过此操作,您可以将客户端脚本设置为侦听来自iFrame的消息,例如{loaded: true}
,并在发生(或不发生)时采取措施。如果iFrame在一定的秒数内没有回复客户端脚本的请求,那么您可以合理地相信页面404&#39; d。
答案 1 :(得分:0)
你可以使用:
iframeElement.onerror = function(){
// do stuff
}
但是,它不会在较旧的浏览器中工作。