如何通过php检查当前窗口是"顶部"(或"父")?

Luc*_*tos 4 javascript php window

如果在父浏览器窗口中查看当前页面,我需要显示链接,或者如果在iframe中查看窗口,则显示另一个链接.我怎么能通过PHP做到这一点?就像是:

if (self == top)
        echo '<span><a href="./" >Link1</a></span>';
else
        echo '<span><a href="./index.php">Link2</a></span>';
Run Code Online (Sandbox Code Playgroud)

编辑:因为它不能用PHP完成,我仍然在寻找类似的解决方案,也许JS,有人可以告诉我如何?

最终编辑:答案:

echo '  
<script type="text/javascript">
    if(window === top) {
document.write("<span><a href=\"./\">go-to-frame</a></span>");
    }
    else {
document.write("<span><a href=\"./index.php\">go-to-top</a></span>");
    }
</script>
';
Run Code Online (Sandbox Code Playgroud)

谢谢你们.

Boj*_*les 20

不能用PHP做到这一点; 它是服务器端语言,而不是客户端语言.因为它取决于客户端如何处理窗口,所以服务器对此一无所知.您可以在AJAX请求中发送回来然后重新加载页面,但这是一个混乱,可怕的解决方案.

要检测您是否在顶级窗口中,您需要执行以下操作:

if(window.top == window.self) {
    // Top level window
} else {
    // Not top level. An iframe, popup or something
}
Run Code Online (Sandbox Code Playgroud)

你对你在问题中给出的例子非常接近.window.top是堆栈的最顶层窗口,window.self是当前JS和DOM所在的窗口.