如果未正确加载,则隐藏iframe

时间:2015-02-18 17:01:51

标签: javascript jquery iframe

我有几个iframe指向我网页上的外部网站。如果这些服务被中断或更改,我想隐藏这些iframe,而不是在我的页面上显示错误消息。 如果iframe已正确加载,有没有办法在Javascript中找到? 我添加了一个类来隐藏iframe,然后在iframe准备就绪时使用jQuery将其删除,如下所示:

$('#widget').ready(function () {
    $('#widget').removeClass('hidden');
});

当我在iframe src中放入无效的网址时,它仍会删除隐藏的类,显示错误iframe。 我的问题是两个:

  • 如果iframe已正确加载,如何才能运行该功能?
  • 我不想使用$('#widget')准备好,而是想使用$('iframe')。准备好立刻定位所有iframe;如果我这样做,如何在函数内部引用加载的特定iframe?

谢谢!

2 个答案:

答案 0 :(得分:3)

您的问题可归结为:

  

如何通过Javascript检查网址是否存在且网站是否存在?

答案分为:

  • 对于内部网址,请使用AJAX并检查响应代码:如果是2xx3xx(例如200或302),则没问题。如果它是4xx5xx(例如404或500)则不好。详情请阅读a similar answer

  • 对于外部网址,由于名为same-origin policy的安全措施,您无法执行此操作。

由于您似乎指向外部网址,因此我的建议如下:

创建服务器端组件(Servlet,RESTful WebService,Struts2操作等等......根据您使用的服务器端技术,根据您正在使用的服务器端技术)执行检查并返回流响应数据(如果有)和HTTP响应代码,您可以检查错误。然后从<iframe>调用您的组件网址。

答案 1 :(得分:1)

你可能无法使用Javascript完成你想要的东西,你需要服务器端的东西,例如PHP。



但是,这里有一些有用的地方可以查找更多信息:


使用此JQuery函数加载iframe后可以运行代码:

$('#myIframe').load(function(){
    //your code (will be called once iframe is done loading)
});

关于iframe加载,请查看this Stack Overflow question and answers


要定位函数内的特定元素,请执行:

$('iframe').aFunction(function() { this.doSomething(); } );

查看this Stack Overflow question并回答关于&#34;此&#34;。