【问题标题】:Prevent open in new tab/window防止在新标签/窗口中打开
【发布时间】:2015-05-11 00:11:58
【问题描述】:

我有一个网站,其中一个角落有一个音乐播放器。因为我不希望每次用户更改网站的一部分时音乐停止,所以我使用 iFrame 作为内容。所以当有人点击菜单按钮时,所有改变的只是 iFrame 的来源。

现在唯一的问题是,如果有人试图在新选项卡/窗口中打开其中一个子页面。他们得到的只是白色背景上的黑色文本,内容应该在 iFrame 中。

有什么办法可以防止这种情况发生吗?

哦,这个页面是www.sinjabe.com,如果有帮助的话。

谢谢

【问题讨论】:

    标签: html css iframe tabs hyperlink


    【解决方案1】:

    最合乎逻辑的解决方案(对我来说......)是将音乐播放器与页面分离;让音乐播放器在不同的窗口/选项卡中打开。当您的网站访问者请求/点击它时,您可以在弹出窗口中打开音乐播放器。

    其他解决方案,例如检测内容是否有父框架,如果有人在新标签页/窗口中打开页面,将导致多个音乐播放器。

    【讨论】:

    • 在另一个窗口中打开媒体播放器会很烦人。任何乐队网站都有这个,所以必须有解决方案。
    • @Rickard:它们不是完全用 Flash 制作的吗?您能否举一个具有所需行为的网站示例?
    【解决方案2】:

    您可以更改子页面以检测它们是否加载到 iframe 中,如下所示:

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

    然后根据需要加载或重定向到完整模板。

    【讨论】:

    • 我将如何/在哪里写这个?我对javascript或类似的东西不是那么好。我想成为,但我不是:)
    • 这应该放在应该在 iframe 中加载的内容中。该代码将检测它是否确实加载到 iframe 中。如果它返回 false,您应该根据需要采取措施来加载完整的模板。
    【解决方案3】:

    把它放在你的子页面上:

    <script type="text/javascript">
        if (window.location == window.parent.location)
        this.window.location = 'main_site.html';
    </script>
    

    --感谢@George Cummins 写了这么短的条件语句:)

    这会将您子页面上的任何直接传入流量重定向到您的主页。不过我必须警告您,用于显示此类内容的 iframe 的 SEO 效率非常低,并且 URL 在历史映射(后退按钮不起作用)和链接共享方面无用,因为当您单击菜单按钮时主 URL 不会更改.

    【讨论】:

    • 您是否有比 iFrames 更好的解决方案来让媒体播放器在我更改子页面时不会停止播放?如果你这样做,那就太好了! :)
    • 嗯,有一种方法,但相当复杂。例如,您可以制作 div 内容占位符,并通过 ajax 用数据填充它。如果您希望它对 SEO 友好,您还应该根据加载的内容更改 URL。您可以在此处查看 Google 如何支持 ajax 内容加载:googlewebmastercentral.blogspot.com/2007/11/… 这样浏览器将不会重新加载以重置播放器,URL 会更改以便可以复制并且 Google 将实现站点结构。
    • 另一种解决方案是网站完全用 Adob​​e Flash 制作。 Flash 网站无需重新加载即可更改内容,因为它们可以从一个文件加载整个网站或动态加载显示所需的资源。
    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    相关资源
    最近更新 更多