确定网页是否在iframe中查看的最佳方法


best way to determine whether a webpage is viewed in an iframe

是否有一种方法来确定用户是否正在使用侧和iframe的网页,还是使用PHP正常浏览?

使用@ decize上面提到的javascript代码(我将其粘贴在下面),

if (parent.frames.length > 0) { ... }

如果上面的代码注意到页面显示在iframe中,那么通过ajax调用'IAmInIFRAME.php'(只是示例)。

您可以在使用IFRAME时为请求添加一些GET参数。

<iframe src="http://www.example.com/iframe?iframe=1">

但是当非iframe请求时,不会有这个GET参数。

你可以检查这个GET参数是否出现,并在会话中定义它。

所以iframe和common window会有不同的会话。

解决方案是查看父窗口的位置和当前窗口的位置是否相同。如果是相同的,那么页面是正常加载的,如果是不同的,那么页面是在iframe中加载的。

var isInIFrame = (window.location != window.parent.location) ? true : false;

这个来自这个网站。http://www.24hourapps.com/2009/01/check-if-page-is-loaded-in-iframe-using.html,它来自这里的SO问题检查网站是否在iframe内。

注意:在一次测试中,我得到了一个跨浏览器的起源错误,但这也只会出现在两个位置不同的情况下。