【问题标题】:Bash : Get the current browser tabBash :获取当前浏览器选项卡
【发布时间】:2015-07-26 19:39:49
【问题描述】:

有什么方法可以使用 bash 在浏览器(至少是 firefox)中获取当前打开的选项卡。 换句话说,从文件浏览器调用 bash 脚本的选项卡的 url(包含在该页面中)

【问题讨论】:

  • 当您说“调用 bash 脚本的选项卡”时,我不清楚您在说什么。标签如何“调用”系统中的 bash 脚本?
  • 我的意思是“调用”:想象一个网页,其中有一个文件浏览器可以选择一个应用程序。 (在 bash 脚本中,我告诉系统打开另一个网站的 url,其中一个参数是当前选项卡的 url)
  • 我不确定我是否清楚,但让事情变得非常简单:我想知道我是否可以使用 xdotool 或任何其他工具来获取活动选项卡的 url网络浏览器)

标签: bash shell google-chrome firefox browser


【解决方案1】:

Firefox 在版本 33 中改变了它在硬盘上存储 url 的方式。

我编写了这个 php 脚本来搜索打开的标签。我使用了 php,所以你需要安装 php5-cli(或更新的)包。

您需要调整 $displayOnlyLastActiveUrl 以满足您的需要:设置为 false 以显示所有打开的 url,为 true 以显示最后一个活动打开的 URL

脚本可能需要改进,但它符合我的需要。

已知限制:

  • 如果您在 Firefox 中设置了多个配置文件,则可能不会查看好的配置文件。

  • 最多可能需要 10 秒才能更新

  • 如果选择输出所有url,可能会出现一些关闭的标签页

只需创建一个包含上述内容的 php 文件并在 shell 中使用php yourfile.php 运行它

<?php
//
// Display curent opened URLs in firefox.
// Author: Julien Marin (malinuxtele[AT]tuxfamily[DOT]org)
// Licence: GPL 3
//

$displayOnlyLastActiveUrl=true; //set to false to display all opened url, true for last active opened URL

//Search for restore.js (might need to be improved for multiprofiles environement...)
if (!$profileIniContents=fopen(getenv("HOME")."/.mozilla/firefox/profiles.ini", "r")) trigger_error("unable to open profiles file", E_USER_ERROR);
$profile="";
$ar_match=array();
while ($ligne=fgets($profileIniContents))
    if (preg_match("/Path=([^.]*)[.]default/", $ligne, $ar_match))
        $profile=$ar_match[1];

//Open recovery.js file
if(! $recoveryFileHandle=fopen(getenv("HOME")."/.mozilla/firefox/$profile.default/sessionstore-backups/recovery.js", "r")) trigger_error("unable to open recovery.js file", E_USER_ERROR);
$recoveryData=json_decode(fread($recoveryFileHandle, 4000000), true);

//parse data
$ar_tabs=array();
foreach ($recoveryData["windows"] as $actWindow)
    foreach ($actWindow["tabs"] as $actTabGroup)
    {
        $lastAccess=$actTabGroup["lastAccessed"];
        foreach ($actTabGroup["entries"] as $actTabEntry)
            if(!$displayOnlyLastActiveUrl) echo($actTabEntry["url"]."\n");
            else $ar_tabs[$lastAccess]=$actTabEntry["url"];

    }

//search last URL
if ($displayOnlyLastActiveUrl)
{
    ksort($ar_tabs);
    echo array_pop($ar_tabs);
}

?>

【讨论】:

    【解决方案2】:

    我偶然发现了这个:

    #!/bin/bash
    for var in "$@" 
    do
        #
        #
    done
    

    $@ 包含选项卡的 url。

    【讨论】:

    • 请给出正确答案。这个怎么用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多