Javascript 如何检测iFrame是否被重定向到另一个url?

Javascript 如何检测iFrame是否被重定向到另一个url?,javascript,redirect,iframe,Javascript,Redirect,Iframe,我想列出一个带有分类广告的iframe。有时,当项目不再可用时,供应商会将页面重定向到其主页。我想能够识别这一点,这样我就可以去索引的项目,假设它已经售出。实现这一点的最佳方法是什么?如果iframe位于不同的域中,则无法检测其位置,除非为其设置了正确的头 不必担心其他域的唯一方法是让服务器端代码在页面上运行检查,看看它是否重定向。您可以使用jQuery的load函数触发onload或reload 您需要存储iframe重新加载的次数 大概 var reloaded = 0; $("#ifra

我想列出一个带有分类广告的iframe。有时,当项目不再可用时,供应商会将页面重定向到其主页。我想能够识别这一点,这样我就可以去索引的项目,假设它已经售出。实现这一点的最佳方法是什么?

如果iframe位于不同的域中,则无法检测其位置,除非为其设置了正确的头


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

您可以使用jQuery的load函数触发onload或reload

您需要存储iframe重新加载的次数

大概

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

在帧加载时,检测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分配给变量。如果已加载多次,请检查原始url是否与当前url匹配


这样做的好处在于只需检查它是否被多次加载,因为您可以针对特定的源等。

据我所知,这是不可能的。只有当iframe引用了托管在您的域上的内容时,您才能这样做。真的吗?这只是一个加载了内容的事件,而不考虑其来源。似乎重定向响应不会触发加载事件,只会触发最终响应。除非它们允许跨域调用。简单地说“不打算在另一个领域工作”是没有用的,因为这是不正确的。如果允许的话,它可以在另一个域上工作。我打赌大多数站点默认情况下不启用CORS。是的,很难找到能够跨域引用的站点。但它确实存在,简单地说它不存在会让那些开始学习和iframe如何工作的人感到困惑。感谢你的投入,我认为跨域问题可能会阻碍它只是不知道是否有解决办法。