启动一个应用程序来记录与greasemonkey保持一致

时间:2009-02-28 19:58:06

标签: javascript greasemonkey

我有我的greasemonkey脚本扫描我访问的每个页面的特定字符串。我想在sqlite db中记录字符串的变化。我会在一段时间内有另一个应用程序处理这个db everyonce。我不知道的是如何将数据存储到sqlite数据库中?我想我可以自动启动一个可执行文件,如果找到该字符串,但我不知道如何通过javascript做到这一点。我认为另一个替代方案是有一个套接字监听某个端口并且有一些js魔法,但我想不出一种静默的方式来发送这样的数据。

5 个答案:

答案 0 :(得分:3)

我建议使用网络服务器来收集数据。您可以设置域或IP以将数据发送到。只是为了开始,如果需要,你甚至可以在localhost上运行。

优势在于,一旦创建,可以在不同的PC上使用相同的架构,因此运行该脚本的任何计算机都可以共享结果。

<强>更新 要与您的服务器通信,您需要使用GM_xmlhttpRequest。我知道有一个库添加了一个抽象层,可以更容易地使用GM_xmlhttpRequest:Speakeasy.js。它是一个相对未知的轻量级ActiveResource类接口,用于从RESTful Web服务器发送和检索数据。 Greasemonkey脚本的Here's an example,在每个页面加载时与Web服务器通信。它会加载注释并在页面上显示它们。

这是一个符合您需求的改编版本:

// ==UserScript==
// @name           Demo Script
// @namespace      http://example.com
// @description    Sample
// @include        *
//
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js
// @require     http://strd6.googlecode.com/svn/trunk/gm_util/d_money.js
// @require     http://strd6.googlecode.com/svn/trunk/gm_util/speakeasy.js
//
// ==/UserScript==


error = D$.error;
log = D$.log;
D$.debug(false);


Speakeasy
  .generateResource('result')
  .configure({
    baseUrl: 'http://localhost:3000/'
  })
;


// Attach all annotations for this page from remote server
var href = window.location.href;
currentUrl = href.substring(href.indexOf('://') + 3);
log(currentUrl);

var result1 = 'something'; // Insert your function to get your result data
var result2 = 'something else'; // Insert your function to get your result data

Speakeasy.result.create({
  data: {
    url: currentUrl, 
    result1: result1, 
    result2: result2
  }
});

您可以快速创建Rails站点或使用您熟悉的任何后端。

答案 1 :(得分:2)

您可能还想考虑使用Google Gears扩展程序,该扩展程序使用了SQLite数据库。

答案 2 :(得分:1)

我不确定如何将它与Greasemonkey一起使用,但Firefox有一个名为Storage的API用于使用sqlite数据库。请在此处查看:https://developer.mozilla.org/en/Storage

答案 3 :(得分:1)

或者您只是使用LubeMonkey, 它是一个改进的Greasemonkey fork,支持sqlite。 每个安装的脚本都会创建自己的sqlite数据库,并且您可以在该数据库中执行查询更新等,甚至可以在数据库或任何数据上缓存图像。 在此处http://www.gamecore.org

答案 4 :(得分:0)

你可以让greasemonkey脚本调用带有一些变量的url(比如你想要存储的数据)。使用ajax请求。您可以在本地设置Web服务器来处理它们。

如果您在Windows上,可以使用WAMP快速启动Web服务器。只需确保启用php_sqlite扩展名。

这可能会帮助您了解一些实施细节: http://www.pathf.com/blogs/2006/07/bjax_with_greas/