我已经阅读了关于一般情况的问题here,但我对如何在Django中执行此操作感兴趣。我假设它将是视图和模板中的代码组合。
更具体地说,如果页面在iframe中加载(使用灯箱),我不想包含顶部菜单和页脚。现在我检查模板中的标志:
{% block header %}
{% if not lightbox %}{{ block.super }}{% endif %}
{% endblock header %}
我根据打开页面的网址在视图中设置:
if http_referer and http_referer.__contains__("/specific/page/"):
context["lightbox"] = True
这显然不灵活。例如,我在每页显示的页脚中都有contact details
的链接。如果用户点击它,则会使用灯箱打开iframe(此处我不想再次看到iframe中的页脚和顶部菜单)。但是如果用户在新选项卡中打开链接,我希望有一个页脚和顶部菜单,以便更轻松地导航和样式一致性。请注意,在这两种情况下,用户都是从同一页面打开链接。因此,上述解决方案不起作用。
@dotcomly您建议重复的问题非常相似,但在我的情况下没有帮助,因为我严格要使用相同的网址(如上所述)并根据上下文更改内容(如果内容加载到iframe或主窗口)。对另一个问题的(接受)答案建议使用不同的网址,这在我的案例中是不可接受的。
答案 0 :(得分:0)
暂时我通过将以下脚本添加到可能在iframe中加载的页面的模板来解决我的问题:
<script type="text/javascript">
function inIframe () {
try {
return window.self !== window.top;
} catch (e) {
return true;
}
}
if(inIframe()) {
$('header').css('display', 'none');
$('footer').css('display', 'none');
// or anything else you may want to do
}
</script>