打开“弹出窗口”而不关注它

时间:2014-09-22 13:34:11

标签: javascript firefox browser popup palemoon

我一直试图打开一个“弹出窗口”[1],而不会自动关注焦点。

我试图模糊它,从开启者或弹出窗口本身失败。 我也寻找pop-under但没有在谷歌上找到任何与这两个主题相关的内容。

我正在使用Firefox。 (嗯......实际上是x64的Palemoon 24.7.1)

我的目标是能够打开一堆标签(例如中间点击)并让它们稍后关闭。

要在Firefox中这样做,并且afaik,你必须使用弹出窗口(对吗?)。但每当我打开一个新的标签(中间点击)时,它会集中在它上面,这非常烦人。


[1]或其他任何符合我期望的东西。

编辑:注意:这是供个人使用的。 :)

2 个答案:

答案 0 :(得分:1)

首先是简单的方法:对于鼠标 - 中键单击:在“选项卡”选项卡上的“工具” - >“选项”中,有一个选项“当我在新选项卡中打开链接时,立即切换到它”。取消选中此选项后,选择“在新标签页中打开”或鼠标中键单击后的链接将在新标签页中打开而不会被聚焦。在同一选项选项卡上,您还需要“在新选项卡中打开新窗口”,然后选中(第一个复选框)。

这适用于大多数普通链接。实际上是JavaScript代码片段的链接在新选项卡中不起作用,因为它们依赖于当前页面中存在的代码。

我发现在Firefox中有用的更改是让光标根据它悬停的链接类型而改变。这将允许您在基本级别上直观地区分单击链接时将发生的情况,而无需查看目标地址。我最初是在askvg找到的。它是文件<profile directory>/chrome/userContent.css的补充(如果目录和文件不存在,则创建它):

/* Change mouse cursor for hyperlinks that open in a new window or tab */
:link[target="_blank"], :visited[target="_blank"],
:link[target="_new"], :visited[target="_new"] {
cursor: crosshair;
}
/* Change mouse cursor for JavaScript links */
a[href^="javascript:"] {
cursor: move;
}

/* Cursor types
default - Normal select cursor
text - Text select cursor (I bar)
vertical-text - Vertical text select cursor
progress - Working in background cursor
wait - Busy cursor
help - Help cursor
crosshair - Precision select cursor
move - Move cursor
no-drop - Unavailable cursor
not-allowed - Unavailable cursor
e-resize - Horizontal resize cursor
n-resize - Vertical resize cursor
nw-resize - Diagonal resize 1 cursor
ne-resize - Diagonal resize 2 cursor
col-resize - Column resize cursor
row-resize - Row resize cursor
*/

除此之外,目前还不清楚你想在什么情况下做这件事,或者至少你愿意在多大程度上做到这一点。您提到窗口/标签在后台打开并自行关闭意味着您实际上不需要用户查看窗口/选项卡。是否只是想要一些URL的请求?使用XMLHttpRequest是否足够?

你自己想要这个,所以如果你走了Firefox扩展的路线,那么打开标签和窗口很容易,而不是让它们集中。可以使用addTab()完成。

您将有助于描述您整体尝试完成的内容以及您正在执行此操作的上下文。

其他信息:

根据您描述的其他信息,您需要的是编写一个Firefox扩展,它可以让您完全控制弹出窗口和选项卡,使它们按您希望的方式工作。对于您希望的内容,您应该(至少)看到以下Mozilla文档:

Tabbed browser上复制示例:

// Add tab  (without it becoming active)
gBrowser.addTab("http://www.google.com/");

// Add tab, then make active
gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/");

来自Tabbed browser

  

在正确的窗口/标签页中打开网址

     

有可用的方法   chrome://browser/content/utilityOverlay.js可让您轻松打开   选项卡中的URL,例如openUILinkIn和openUILink。

     

openUILinkIn(url,where,allowThirdPartyFixup,postData,referrerUrl   )       其中:

     
      
  • “当前”当前标签(如果没有任何浏览器窗口,则改为在新窗口中显示)
  •   
  • “tab”新标签(如果没有任何浏览器窗口,则在新窗口中)
  •   
  • “tabshifted”与“tab”相同,但在后台如果默认选择新标签,反之亦然
  •   
  • “window”新窗口
  •   
  • “保存”保存到磁盘(没有文件名提示!)
  •   

同样来自Tabbed browser,覆盖扩展的代码示例

  

将在新标签页,现有标签页或现有窗口中打开网址   根据按下的鼠标按钮和哪些热键(例如:Ctrl)   正在举行。给出的代码是menuitem,但可以使用   同样适用于其他XUL元素。这只能在叠加层中使用   browser.xul。

     

XUL:

<menuitem oncommand="myExtension.foo(event)" onclick="checkForMiddleClick(this, event)" label="Click me"/>
     

JS:

var myExtension = {
  foo: function(event) {
    openUILink("http://www.example.com", event, false, true);
  }
}

答案 1 :(得分:0)

最后,我认为我使用这种技术或多或少地得到了我想要实现的目标:

打开的标签(“弹出窗口”)会与网络服务器(在我的情况下,在Python中)进行通信,这要归功于使用像GreaseMonkey这样的插件加载的JavaScript。

然后服务器会告诉弹出窗口何时关闭:工作得很好!

编辑:我只是想到了另一种做法(伪造它),可能会或可能不符合您的需求(取决于您的应用)。

打开一个“弹出窗口”(新标签页),其中包含当前网址(也就是它可能为您提供的技巧),然后将您首页的网址更改为您正在寻找的“popunder”。