在Firefox中的Tabs之间创建新选项卡/切换?

时间:2009-11-27 12:14:26

标签: javascript html firefox

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

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

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

我知道Firefox可以强制打开选项卡中的所有链接,但我认为不会削减它,因为我仍然无法解决并关注新打开的窗口。

  

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

8 个答案:

答案 0 :(得分:16)

无法强制窗口作为标签打开。这完全取决于用户的偏好设置。

答案 1 :(得分:3)

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

(如果窗口太窄,则有HTML标签修改预览

它似乎没有给用户增加混乱,对我来说这种方法效果很好。也许在你的情况下值得考虑。

答案 2 :(得分:3)

我在第二个答案中说你应该使用Javascript在HTML中执行此操作。然后它可以在支持JS的所有浏览器中工作。

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

这种双重解决方案的优点是标签式方法可以按照您希望的方式适用于大多数情况,但对于使用两个屏幕的用户,或者更喜欢在浏览器标签之间切换的用户,仍然可以灵活地在多窗口模式下工作。这可以在没有任何浏览器扩展的情况下完成,并且它在IE以及Firefox,Opera等中应该同样有效。避免将自己锁定在一个浏览器中,即使是像Firefox一样出色的浏览器。有一天客户需要使用Opera或Safari,你就会陷入困境。

答案 3 :(得分:2)

使用iframe和JavaScript怎么样?

我知道你说你想避免'使用iframe混淆',但在我看来,如果你真的需要同时加载不同的页面,这是最好的选择。

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

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

所有这一切也可以使用AJAX完成,但iframe解决方案非常简单,因为您只需要加载就绪页面,所有回发都已经由原始页面处理并与master-admin-page分开。

你可能还需要玩一点来设置iframe的正确高度,以适应没有滚动条的所有内容,但这又是一点点javascript。

答案 4 :(得分:1)

没有,没有办法强行打开新标签,只是因为无标签浏览不支持

您只能将其设置为打开新窗口,而不是新选项卡。

答案 5 :(得分:1)

我想起了{p> Greasemonkey - 快速google给出了open in tabs on left click。我认为你可以修改它,所以它只能在一个特定的页面上运行,而且你会起来不停。

答案 6 :(得分:1)

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

答案 7 :(得分:1)

您无法强制使用标签,但如果您使用具有特定名称的目标,例如target =“my_cms_window”,则许多浏览器会将其作为新标签打开。此外,他们会记住名称,如果您反复使用目标,请将内容放在同一个标​​签中。我发现这在现实世界中运作良好。