温馨提示:本文翻译自stackoverflow.com,查看原文请点击:jquery - Catch error if iframe src fails to load . Error :-"Refused to display 'http://www.google.co.in/' in
iframe jquery knockout.js same-origin-policy

jquery - 如果iframe src无法加载,则捕获错误。

发布于 2020-04-27 12:11:57

Knockout.js用来绑定iframe广告src代码(这对于用户而言是可配置的)。

现在,如果用户配置了http://www.google.com(我知道它不会在iframe中加载,这就是为什么我将它用于-ve场景),并且必须在IFrame中显示它。但它抛出错误:

拒绝在框架中显示“ http://www.google.co.in/ ”,因为它将“ X-Frame-Options”设置为“ SAMEORIGIN”。

我为iframe使用以下代码:-

<iframe class="iframe" id="iframe" data-bind="attr: {src: externalAppUrl, height: iframeheight}">
    <p>Hi, This website does not supports IFrame</p>
</iframe>

我想要的是,如果URL无法加载。我想显示自定义消息出现错误时控制台的屏幕截图 在这里

现在,如果我将onload和onerror用作:-

<iframe id="browse" style="width:100%;height:100%" onload="alert('Done')" onerror="alert('Failed')"></iframe>

它可以很好地加载w3schools.com,但不能与google.com一起加载。

其次:-如果我将其作为一个函数并像我在小提琴中所做的那样尝试,则它不起作用。

<iframe id="browse" style="width:100%;height:100%" onload="load" onerror="error"></iframe>

我不知道该如何运行它并捕获错误。

编辑:-我曾见过要在iframe未加载或在stackoverflow中加载问题的情况下调用函数的方法,但它显示了可在iframe中加载的网站的错误。

此外,我已经研究了加载事件上的Stackoverflow iframe, 谢谢!

查看更多

提问者
Shubh
被浏览
67
Evan Larsen 2013-09-07 03:47

由于浏览器设置的“同源策略”,您将无法从客户端执行此操作除了基本属性(如宽度和高度)外,您将无法从iFrame上获得很多信息。

此外,谷歌在其响应标头中设置SAMEORIGIN 的“ X-Frame-Options ”。

即使您对Google进行了ajax调用,您也将无法检查响应,因为浏览器执行的是“同源政策”。

因此,唯一的选择是从服务器发出请求,以查看是否可以在IFrame中显示该站点。

因此,在您的服务器上。您的网络应用会向www.google.com发出请求,然后检查响应以查看其标题参数是否为X-Frame-Options。如果确实存在,则说明IFrame会出错。