如何检查当前窗口是否为";top";(或“家长”)通过php?

如何检查当前窗口是否为";top";(或“家长”)通过php?,php,javascript,window,Php,Javascript,Window,如果在父浏览器窗口中查看当前页面,我需要显示一个链接;如果在iframe中查看窗口,我需要显示另一个链接。 如何通过php实现这一点?比如: if (self == top) echo '<span><a href="./" >Link1</a></span>'; else echo '<span><a href="./index.php">Link2</a></span&g

如果在父浏览器窗口中查看当前页面,我需要显示一个链接;如果在iframe中查看窗口,我需要显示另一个链接。 如何通过php实现这一点?比如:

if (self == top)
        echo '<span><a href="./" >Link1</a></span>';
else
        echo '<span><a href="./index.php">Link2</a></span>';
if(self==top)
回声';
其他的
回声';
编辑:因为它不能用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>
';
echo'
如果(窗口===顶部){
文件。填写(“”);
}
否则{
文件。填写(“”);
}
';
谢谢大家。

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

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

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

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

无法从PHP中检测环境的相关信息

但是,您可以从Javascript中检测到它(通常)

例如:

(在您的HTML中)


(在
末尾的脚本中:


如果(窗口===顶部){
函数(){
//这将从文档树中获取元素
var link=document.getElementById('MyDynamicLink');
//这会将“href”设置为“./index.php”。
link.setAttribute('href','./index.php');
//这将链接内的文本设置为“Link2”
link.innerHTML='Link2';
//或者在这种情况下你真的想做什么
}();
}
Javascript当然是微不足道的。但是如果你的目标是帮助而不是阻碍你的用户,那就不应该是一个问题。

答案是

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>
';
echo'
如果(窗口===顶部){
文件。填写(“”);
}
否则{
文件。填写(“”);
}
';

根据您是否在iframe中使用查询字符串来传递查询字符串可能要容易得多,但如果不可能,您需要使用JavaScript来重写链接。好吧,在这两个答案之间玩游戏,我想出了如何做到这一点。因为我无法将这两个答案标记为正确,所以我不会将其标记为无。伙计们,这样可以吗?或者我应该做一些还有什么事吗?无论如何,我用正确的答案编辑了第一个主题。可能是Ok的重复,但我的知识有限,如何将此JS插入我的php脚本?@LucasMatos你不能将JavaScript插入php,除非你重复它。@Lucas你需要将JavaScript放入HTML中的
标记中。你应该做一些研究关于如何将JavaScript包含到页面中。类似于
echo'if(window.top==window.self)else';
这看起来是一个不错的解决方案,但我不知道你在那里做什么..无法实现。Link1和Link2是文本锚,而不是真正的链接(URL)。它不起作用,它的标题指向相同的目的地。/无论是否在框架中查看页面,文本链接都是相同的链接1
<script type="text/javascript">
    if(window === top) {
        function () {
            //this grabs the element from the document tree
            var link = document.getElementById('MyDynamicLink');

            //this sets the 'href' to './index.php'.
            link.setAttribute('href', './index.php');

            //this sets the text inside the link to be 'Link2'
            link.innerHTML = 'Link2';
            //or whatever else you really wanted to do in this situation
        }();
    }
</script>
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>
';