我想从命令行退出 Firefox,而不是“强制”退出。我只想产生与在 Firefox 菜单中单击“退出”相同的效果。
根据以下内容,我似乎需要以某种方式调用“goQuitApplication”。
我尝试制作一个 xul 文件并运行它,但出现错误。我尝试从此处运行文件Mozillazine 帖子,但 Firefox 在控制台中说“TypeError: Components.classes 未定义”。
以下是该xul文件的代码:
Remote XUL Manager by Jorge Villalobos
https://addons.mozilla.org/firefox/addon/235281/
Domains with remote XUL permission: <Local files>
Loads the specified chrome:
firefox -chrome example.xul
-->
<window onload="load()"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript">
<![CDATA[
function load() {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
getService(Components.interfaces.nsIWindowMediator);
var win = wm.getMostRecentWindow("navigator:browser");
win.setTimeout("goQuitApplication()", 250);
window.close();
}
]]>
</script>
</window>
我尝试在加载函数中简单地调用“goQuitApplication”(如果在浏览器控制台中调用,它似乎可以工作)但随后出现错误“ReferenceError:goQuitApplication 未定义”。
是否有人知道从命令行退出 Firefox 的好方法,而无需强制终止进程或关闭单个窗口?
答案1
我昨天确实遇到了这个问题。我自己也在寻找答案。如果你只打开了一个窗口(一个简单的 taskkill 行,没有 /f,这样浏览器就可以干净地关闭),这没什么大不了的,但是一旦你有两个或更多的窗口,它就会变得更加复杂,因为 taskkill 命令一次只会关闭一个窗口(除非它是最后一个关闭的窗口,否则会丢失窗口的选项卡)。
我最终编写了一个 cmd/vbs 脚本组合来彻底关闭 Firefox。脚本将检测主密码提示是否打开并关闭它(避免提示干扰 FFQuit 脚本),然后 FFQuit 脚本将激活 FF 并发送 Alt-F 键击以打开文件菜单,发送 X 以退出 Firefox。
这样您就可以快速干净地退出,所有窗口在重新启动后都会恢复。还有重新启动 FF 的选项(只需取消注释相关部分):
第 1 部分:封装的 cmd 脚本:quitFF.cmd
set FFexec=%programfiles(x86)%\Mozilla Firefox\firefox.exe set ERRORLEVEL= :: Check if that annoying Master Password prompt is open and close it tasklist /FI "WINDOWTITLE eq Password Required" 2>NUL | find /I /N firefox.exe">NUL IF "%ERRORLEVEL%"=="0" MPWDclose.vbs FFQuit.vbs ::Optional Restart Firefox - ping is just a sneaky way of getting sleep functionality ::Uncomment REM to activate REM ping 1.0.0.0 -n 1 -w 2000 > nul REM start "" "%FFexec%" & exit
第 2 部分:MPWDclose.vbs
Set MPWDclose = WScript.CreateObject("WScript.Shell") WScript.Sleep 250 MPWDclose.AppActivate("Password Required") WScript.Sleep 250 MPWDclose.Sendkeys "{ESC}" WScript.Sleep 50 WScript.Quit
第 3 部分:FFQuit.vbs
Set FFquit = WScript.CreateObject("WScript.Shell") WScript.Sleep 250 FFquit.AppActivate("- Mozilla Firefox") WScript.Sleep 250 FFquit.Sendkeys "%F" WScript.Sleep 100 FFquit.Sendkeys "x" WScript.Quit