2012-12-18 87 views
1

我想列出带有分类广告的iframe。有时供应商会在该项目不再可用时将页面重定向到其主页。我希望能够识别这一点,这样我就可以假定已售出的商品进行索引。什么是完成这个最好的方法?如何检测iFrame是否被重定向到另一个url?

+0

从我可以告诉,这是不可能的好处。您只能在iframe参考托管在您的域上的内容时才能执行此操作。 – Blender

回答

0

当iframe位于不同的域中时,您将无法检测iframe的位置,除非它们为CORS设置了正确的标头。

不必担心其他域的唯一方法是让您的服务器端代码在页面上运行检查并查看它是否重定向。

2

您可以使用jQuery的加载函数来触发onload或重新加载。

http://api.jquery.com/load/

您将需要存储的时间的iframe已重新加载的数量。

喜欢的东西,

var reloaded = 0; 
$("#iframe_id").load(function(){ 
    reloaded++; 
}); 
+0

不会在另一个域上工作。 – epascarello

+0

真的吗?这只是一个内容加载的事件,无论其来源如何。 – shapeshifter

+0

似乎重定向响应不会触发加载事件,只会触发最终响应。 – Rm558

0

在帧载荷,检测什么URL是:

var frameLoadCount = 0; 
var firstURL; 

$('iframe').load(function() { 
    if (frameLoadCount === 0) { 
     firstURL = $(this).attr('src'); 
    } else { 
     if (firstURL !== $(this).attr('src')) { 
      // The iframe has been redirected. 
     } 
    } 
}); 

基本上上面的代码运行每次的IFRAME加载,检查它是否是第一次,如果是,则将URL分配给一个变量。如果它已加载多次,请检查原始网址是否与当前网址匹配。

这是不同于如果它的加载不止一次只是检查,因为你可以针对具体来源等

+1

不适用于其他域 – epascarello

+1

除非它们允许跨域调用。简单地说“不要在另一个域上工作”是无用的,因为它不正确。它可以在另一个域上工作,如果允许的话。 – Ojame

+0

我敢打赌,大多数网站在默认情况下都不启用CORS。 – epascarello

相关问题