Webkit / Safari / Firefox / API:我可以以编程方式读取/提取多个选项卡的URL吗?

时间:2008-11-18 16:01:13

标签: javascript firefox safari applescript automator

主题:以编程方式操作OS X 10.4.x + Tiger / Leopard中的Web浏览器。 主题:Webkit,Safari,Firefox,API,Applescript,Automator,Javascript,Ruby,Ruby on Rails,OS X,Tiger 目标:从Safari收集/读取/提取URL到文本(Ruby on Rails代码)文件。 注意:使用FF的解决方案也非常受欢迎。我使用Safari(v.3.x,OS X 10.4.x)更喜欢在Safari中使用的解决方案。

有时,我使用网络浏览器查找/显示我想要稍后再访问的多个网站页面,以及2)我想在文本文件中将其组合在一起的网址,以供将来参考和/或b)以编程方式操纵。

例如:在今天的纽约时报,我发现了七篇NYT文章,我想发布到我的del.icio.us帐户。并且在当天的在线版本标题之后很久就以“打印机友好”格式通过电子邮件分享。我在浏览器窗口的水龙头中打开每个,然后是Presto!他们的URL自动被打包成一个文件,其中(自定义)Ruby on Rails应用程序将打印版本的URL发送到电子邮件地址和我的Del.icio.us帐户。

我认为有一种方法可以使用Applescript或Automator从操作系统中进行URL提取步骤。我想可能有一种方法可以使用Javascript。

我的问题:如何阅读网络浏览器的标签位置字段并将这些字符串整理成一个文本文件(在我的操作系统内或通过电子线连接到网络应用程序。)

非常感谢。

5 个答案:

答案 0 :(得分:2)

对于Safari,这对于Applescript来说非常简单。我建议从Bookmark all tabs之类的东西开始,以获得您需要的基本制表符抓取逻辑,并将其合并到John Gruber的旧Save and restore Safari URLs脚本中,以将URL作为列表保存到文本文件。

也可能有更好的Applescript解决方案;这些只是我通过谷歌发现的第一个,而且两者都非常糟糕。

有关Applescript的进一步帮助和资源,我建议使用MacScripter forums

祝你好运!

答案 1 :(得分:1)

如果您希望这样做是Firefox,您将不得不学习和使用XUL。这些标签对于javascript(安全/隐私问题)是不可见的,并且在firefox之外没有用于此类信息的API。

Getting Started with XUL development是如何在XUL中开始编程的好资源。

IBM为您的第一个XUL代码提供了decent tutorial

这是一个tab handler in XUL,可以让您了解如何处理标签。

short tutorial that demonstrates混合使用XUL,javascript和其他技术来更新网站。

最后,这是一个很好的lifehacker tutorial on firefox extensions/add-ons,它会向您展示上面的一个简单示例,然后如何将其打包为.xpi,以便其他人可以轻松地将其添加到Firefox并从中进行管理。< / p>

我对Safari没有任何见解,但它基于webkit,应该有一些自定义的资源,类似于你在firefox上使用XUL的方式。

祝你好运!

- 亚当

答案 2 :(得分:0)

Firefox中最简单的解决方案是“为所有打开的标签添加书签”(在书签菜单中)。为此“书签文件夹”指定一个特定名称。然后,您可以进入您的个人资料(http://support.mozilla.com/en-US/kb/Profiles)并打开文件“bookmarks.html”,其中包含您想要的所有信息,然后是一些信息。

如果您想使用UI,请查看禁忌和“Sitzungs-Manager”(可能是Session-Manager)。两者都适用于Firefox 3.0 +

Taboo允许您保存用于“稍后阅读”的选项卡(有点像书签菜单,但只需单击一下;也会保存页面的屏幕截图)。

会话管理器插件允许您保存当前打开的选项卡和窗口,并在以后恢复它们。

答案 3 :(得分:0)

您可以修改此位0代码以开始使用。我用它来为一个标签构建我自己的个人书签插件。您可以在xul窗口中弹出URL列表,然后选择要发布/ arrogate到一个地方的URL。

function getGetDocData(){
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
               .getService(Components.interfaces.nsIWindowMediator);
var mainWindow = wm.getMostRecentWindow("navigator:browser");
var tab  = mainWindow.getBrowser().selectedTab;
titleDG = tab.label;
for(var i = 0; i < window.opener.length; i++){
    var doc = window.opener[i].document;
    if(doc.title == tab.label){
        hrefToDG = doc.location.href;
    }
}

}

答案 4 :(得分:0)

这是AppleScript的一个脚本,可以帮助您(此脚本适用于Safari)...

property these_URLs : {}
set the text item delimeters of AppleScript to ""
----------------------------------------------------------------------------------
--Initialize the program
set the action to the button returned of (display dialog "Create or view a list of favorites..." buttons{"Cancel","View","Create"} default button 3)
if the action is "Create" then
    create_text_file()
else
    open_favorites()
end if

---------------------------------SUBROUTINES--------------------------------------

on create_text_file()
    --get the URL of every tab of every window
    tell application "Safari"
        set theWindows to (get every document) as list
        repeat with i from 1 to the count of theWindows
            set this_Window to item i of theWindows
            set theTabs to (get every tab of this_Window) as list
            repeat with x from 1 to the count of theTabs
                set this_Tab to item x of theTabs
                set this_URL to (the URL of this_tab) as string
                set the end of these_URLs to this_URL
            end repeat
        end repeat
    end tell

    --put the URLs into a text document
    set newFile to (choose file name with prompt "Choose a name and location for the new file:" default location (path to desktop folder))
    try
        open for access newFile with write permission
        set the text item delimiters of AppleScript to return
        set the_URLs to these_URLs as string
        write the_URLS to file newFile
        close access newFile
    on error
        try
            close access newFile
        end try
    end try
    set the text item delimiters of AppleScript to ""
end create_text_file()

on open_favorites()
   --Verify whether you have saved any favorites with this script
   if these_URLs is {} then display dialog "You have not added any favorites with this script." with icon note buttons{"Cancel"}
   --there are favorites so open all the URLs you stored in the text file
   repeat with i from 1 to the count of these_URLs
       set this_URL to item i of these_URLs
       tell application "Safari" to make new tab at the end of tabs of document 1 with properties {URL:this_URL}
   end repeat
end open_favorites

如果您有任何疑问,请询问。 :)