通过浏览器扩展添加表值

时间:2011-01-15 16:06:10

标签: jquery parsing firefox google-chrome greasemonkey

我在网站表中有一组数据,其中包含多个页面,我需要解析并添加某个字段的值,特别是价格字段和库存字段。 我无法访问代码或数据库。有没有人知道Chrome或Firefox中是否有可以促进此类功能的扩展程序?以下是我需要的数据示例:

我想要一个非常简单的摘要,例如“总库存价格:$ 500.00”。我甚至不介意它是否是每页,我必须写下每个新的总数并自己添加它们。我精通jQuery,所以如果我能以某种方式自己写这个,我甚至不介意指向那个方向。它必须是一个扩展,因为我没有直接访问该页面。

编辑:一个greasemonkey脚本可以这样做吗?

2 个答案:

答案 0 :(得分:2)

如果你精通jQuery,并且知道如何从该表中提取数据并进行自己的计算,那么你就可以轻松完成!请参阅文档,它包含您执行此类操作所需的所有信息:

http://code.google.com/chrome/extensions/getstarted.html

单程

如果您希望在访问该页面时始终显示总计,则可以使用content script。内容脚本世界将直接与该页面的DOM进行通信,因此您可以使用jQuery并执行您的操作。骨架就是:

<强>的manifest.json

{
  "name": "Content Script test",
  "version": "0.1",
  "description": "Content Script test",
  "content_scripts": [
    {
      "matches": ["http://www.website.com/*"],
      "js": [ "jquery-1.4.2.min.js", "cs.js" ],
      "run_at": "document_start",
      "all_frames": true
    }
  ]
}

<强> cs.js

// Your jQuery

另一种方式

如果只想在浏览器上单击按钮时显示总计。您可以使用browser action。单击该浏览器操作时,您需要background page才能收听。基本上,它的骨架将是:

<强>的manifest.json

{
  "name": "Browser Action test",
  "version": "0.1",
  "description": "Content Script test",
  "background_page": "background.html",
    "browser_action": {
    "default_icon": "icon19.png",
    "default_title": "Browser Action Test"
  },
  "permissions": [ "tabs", "http://www.website.com/*" ]
}

<强> background.html

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(tab.id, {file: 'jquery-1.4.2.min.js'});
  chrome.tabs.executeScript(tab.id, {file: 'cs.js'});
});

<强> cs.js

// Your jQuery

就是这样,请参阅文档以获得更多帮助,上面的代码是未经测试的,所以如果开箱即用不起作用,请不要感到惊讶:)

答案 1 :(得分:1)

您可以尝试这样的操作,并将其另存为书签:

$('table.inventory').each( function(i){ // allow possibility of more than one table?
  var arTot = $(this).find('tr').map( function(i,e){
    var qty = parseInt( e.find('td:first').text(), 10 );
    var price = parseFloat( e.find('td:last').text() );
    return qty * price; // leave rounding and precision as your exercise
  }).get(); // result as an array
  alert( 'Total: ' + arraySum( arTot ) ); // reduce to single value
});

function arraySum( ar ){ // convenience function
  for(var i=0, sum=0, len=ar.length; i<len; sum+=[i++]);
  return sum;
}

未经过测试,但应该为您提供一般的想法。使用bookmarklet生成器(有many),放入JavaScript,并将其保存为书签。然后只需在查看任何页面时单击书签链接,您将收到显示总计的警报。可能的增强功能包括使用URL作为键将值保存到localStorage(因此您不会复制,并且可以跟踪累计总数)。