0

我一直在尝试打开一个“弹出窗口”[1],但它不会自动获得焦点。

我试图从开瓶器或弹出窗口本身模糊它,但没有成功。我还查找了 pop-under,但在 Google 上没有找到与这两个主题相关的任何内容。

我正在使用火狐。(嗯……实际上是 x64 的 Palemoon 24.7.1)

我的目标是能够打开一堆标签(例如,通过中键单击)并让它们稍后自行关闭。

要在 Firefox 和 afaik 中这样做,您必须使用弹出窗口(对吗?)。但是每次我打开一个新标签(通过中键单击)时,它都会专注于它,这很烦人。


[1] 或任何其他符合我期望的内容。

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

4

2 回答 2

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 文档:

在选项卡式浏览器上复制示例:

// 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/");

选项卡式浏览器

在正确的窗口/选项卡中打开 URL

chrome://browser/content/utilityOverlay.js中提供了一些方法 ,可以轻松地在 openUILinkIn 和 openUILink 等选项卡中打开 URL。

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

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

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

将根据按下的鼠标按钮和按住的热键(例如:Ctrl)在新选项卡、现有选项卡或现有窗口中打开 URL。给出的代码适用于menuitem,但同样适用于其他 XUL 元素。这仅适用于 browser.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);
  }
}
于 2014-09-23T00:10:48.727 回答
0

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

由于使用像 GreaseMonkey 这样的插件加载了 JavaScript,打开的选项卡(“弹出窗口”)将与网络服务器(在我的情况下,在 Python 中)进行通信。

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


编辑:我只是想到了一种替代方法(伪造它),它可能适合也可能不适合您的需求(取决于您的应用程序)。

使用当前 URL 打开一个“弹出窗口”(新选项卡)(这可能对您有用与否),然后将您的第一页的 URL 更改为您正在寻找的“弹出窗口”。

于 2015-05-15T04:34:15.760 回答