【问题标题】:Creating new tab / switching between Tabs in Firefox?在 Firefox 中创建新选项卡/在选项卡之间切换?
【发布时间】:2009-11-27 12:14:25
【问题描述】:

我正在寻找一种方法来改进基于 PHP 的 CMS 中的工作流程。页面的编辑器模式和预览模式之间有很多切换。编辑器模式加载量很大,所以我想在不同的窗口中打开预览模式。

我不想在当前窗口中使用新窗口或 iframe 来保持工作流程简单并避免混淆。

有没有办法在 Firefox 中显式打开一个新选项卡(不是窗口),并从文档跳转到该选项卡?用户数量有限,所以有可能设置具有必要扩展/权限的客户端。

我知道 Firefox 可以强制打开选项卡中的所有链接,但我认为这不会解决问题,因为我仍然无法处理和聚焦新打开的窗口。

感谢大家的所有精彩回答。我现在有足够的材料来决定我是否会采用greasemonkey 方法,依靠用户设置“在选项卡中打开”并按名称寻址窗口,或者像你们中的许多人建议的那样使用“内联”HTML 解决方案。我接受了我觉得最努力的答案。

【问题讨论】:

标签: javascript html firefox


【解决方案1】:

没有办法强制窗口作为选项卡打开。这完全取决于用户的偏好设置。

【讨论】:

  • 正确,想象一下如果有……破坏。
  • 我很高兴每个标签在现代浏览器中都有 javascript 沙盒。否则会发生的混乱只是不值得考虑
  • 我同意,出于用户体验的原因,无法在简单的 HTML 中执行此操作。这就是为什么我提到安装扩展是可能的。也许有一个为此目的而存在。
  • 也许使用 ajax 请求来加载预览和编辑器。隐藏编辑器正在加载的面板直到它加载,同时显示预览面板......我认为这是实现这种事情的唯一优雅方式。并且所有的库都可以快速干净地实现它,一点也不难。
  • 浏览器实际上每个标签都有 javascript 沙盒吗?我的印象是您可以window.open() 一个新选项卡,然后使用返回值(即新选项卡/窗口的 WindowProxy)来查看该选项卡/窗口在做什么,只要它在同一个域。
【解决方案2】:

我支持您应该使用 Javascript 在 HTML 中执行此操作的答案。那么它就可以在所有支持JS的浏览器上运行了。

我会在页面上放置两个 div,并根据选择的选项卡显示/隐藏每个 div。如果您对此很聪明,您可以捕获选项卡上的点击并确定用户是左键单击还是中键单击。如果他们左键单击,您将在页面上加载该选项卡。如果他们中键单击您让浏览器打开一个新选项卡/窗口(根据用户的偏好,不要尝试强制它),并保持当前窗口不变(即不要切换到新选项卡) .单击选项卡的操作是使用 AJAX 加载远程文档的内容并将其放入选项卡中。在提交 AJAX 请求之前使用 Javascript 修改 URL,以便服务器知道发送网页片段而不是整个页面。

这种双重性质的解决方案的优势在于,在大多数情况下,选项卡式方法将按照您希望的方式工作,但对于拥有两个屏幕或喜欢在浏览器选项卡之间切换的用户来说,他们仍然可以灵活地在多窗口模式下工作。这一切都可以在没有任何浏览器扩展的情况下完成,它应该在 IE 以及 Firefox、Opera 等中同样有效。避免将自己锁定在一种浏览器中,即使是与 Firefox 一样出色的浏览器。有一天,一位客户需要使用 Opera 或 Safari,而您将陷入困境。

【讨论】:

    【解决方案3】:

    您说您不想使用 iframe 以避免混淆。现在我不知道您网站的布局,但我一直在使用编辑器在其自己的div 中打开的方法,就在正在编辑的内容旁边,并且在您编辑时内容正在实时更新。无需更改标签。

    (如果窗口太窄,则有 HTML 选项卡 EditPreview

    它似乎不会给用户增加困惑,对我来说,这种方法非常有效。也许你的情况值得考虑。

    【讨论】:

    • +1,我喜欢选项卡式视图的选项,我认为它在 UI 方面最接近请求/希望的功能。
    【解决方案4】:

    如何使用 iframe 和 JavaScript?

    我知道你说过你想避免“使用 iframe 的混乱”,但我认为如果你真的需要同时加载不同的页面,这是最好的选择。

    理论上,您可以使用 javascript 甚至更好地使用 jQuery 创建自己的标签系统,因为它的 UI 模块提供了非常酷的tab control

    对于每个选项卡,您可以在 <iframe> 元素内加载特定管理页面的单独“无页眉-无页脚”版本。如果用户想修改一些不同的东西,他只需点击选项卡并带来不同的 iframe。

    所有这些也可以使用 AJAX 来完成,但是 iframe 解决方案非常简单,因为您只需要加载准备好的页面并且所有回发都已经由原始页面处理并与主管理页面分开。

    您可能还需要稍微设置一下 iframe 的正确高度,以适应所有没有滚动条的内容,但这只是一点点 javascript。

    【讨论】:

      【解决方案5】:

      不,没有办法强制打开新标签页,因为非标签页浏览不支持此操作

      您只能将其设置为打开一个新窗口,而不是一个新标签。

      【讨论】:

        【解决方案6】:

        Greasemonkey 浮现在脑海 - 一个快速的谷歌给出了open in tabs on left click。我认为您可以对其进行修改,使其仅在一个特定页面上运行,并且您会起床并离开。

        【讨论】:

          【解决方案7】:

          这个问题让我想知道 HTML 5 是否允许这种规范,以及 it doesn't(在另一个 hyperlink attributes 中也没有)。一个新的浏览上下文就是一个新的浏览上下文,没有办法表达偏好选项卡而不是窗口或前景而不是背景。

          【讨论】:

            【解决方案8】:

            您不能强制使用选项卡,但如果您使用具有特定名称的目标,例如 target="my_cms_window",许多浏览器会将其作为新选项卡打开。此外,他们会记住名称,如果您重复使用目标,请将内容放在同一个选项卡中。我发现这在现实世界中效果很好。

            【讨论】:

            • Wordpress 使用此方法进行文章/页面预览
            猜你喜欢
            • 1970-01-01
            • 2023-03-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多