我一直在尝试打开一个“弹出窗口”[1],但它不会自动获取焦点。
我试图从开场白或弹出窗口本身模糊它,但没有成功。 我还查找了弹出式广告,但在 Google 上没有找到与这两个主题相关的任何内容。
我使用的是火狐浏览器。 (嗯……实际上是 x64 的 Palemoon 24.7.1)
我的目标是能够打开一堆选项卡(例如通过中键单击)并让它们稍后自行关闭。
要在 Firefox 中执行此操作,据我所知,您必须使用弹出窗口(对吗?)。但每次我打开一个新选项卡(单击鼠标中键)时,它都会聚焦在该选项卡上,这非常烦人。
<小时/>[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 (包含如何打开选项卡(不选择它)以及如何打开选项卡并选择它的明确示例。)
- BrowserApp
- addTab
- closeTab
- tab
复制 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 :
Opening a URL in the correct window/tab
There are methods available in chrome://browser/content/utilityOverlay.js that make it easy to open URL in tabs such as openUILinkIn and openUILink.
openUILinkIn( url, where, allowThirdPartyFixup, postData, referrerUrl ) where:
- "current" current tab (if there aren't any browser windows, then in a new window instead)
- "tab" new tab (if there aren't any browser windows, then in a new window instead)
- "tabshifted" same as "tab" but in background if default is to select new tabs, and vice versa
- "window" new window
- "save" save to disk (with no filename hint!)
同样来自Tabbed browser ,覆盖扩展的代码示例
will open a URL in a new tab, an existing tab, or an existing window based on which mouse button was pressed and which hotkeys (ex: Ctrl) are being held. The code given is for a menuitem, but will work equally well for other XUL elements. This will only work in an overlay of 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); } }
关于javascript - 打开 "popup"而不聚焦它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25975471/