如果在父浏览器窗口中查看当前页面,我需要显示链接,如果在iframe中查看窗口,则显示另一个链接。 我怎么能通过PHP做到这一点?类似的东西:
if (self == top)
echo '<span><a href="./" >Link1</a></span>';
else
echo '<span><a href="./index.php">Link2</a></span>';
编辑:既然不能用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>
';
谢谢大家。
答案 0 :(得分:18)
你无法使用PHP执行此操作;它是服务器端语言,而不是客户端语言。因为它取决于客户端如何处理窗口,所以服务器对此一无所知。您可以在AJAX请求中发送回来然后重新加载页面,但这是一个混乱,可怕的解决方案。
要检测您是否在顶级窗口中,您需要执行以下操作:
if(window.top == window.self) {
// Top level window
} else {
// Not top level. An iframe, popup or something
}
您与您在问题中提供的示例非常接近。 window.top
是堆栈的最顶层窗口,window.self
是当前JS和DOM所在的窗口。
答案 1 :(得分:0)
无法从PHP中检测到有关环境的信息。
但是,您可以在Javascript(通常)中检测到它。
示例:
(在某处的HTML中)
<span><a id="MyDynamicLink" href="./">Link1</a></span>
(在<body>
:
<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>
Javascript当然是微不足道的。但如果你的目标是帮助而不是阻碍用户,那应该不是问题。
答案 2 :(得分:-2)
答案是
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>
';