Добавить значения таблицы через расширение браузера - PullRequest
1 голос
/ 15 января 2011

У меня есть набор данных в таблице веб-сайта, который содержит несколько страниц, которые мне нужно проанализировать и добавить значения определенного поля, в частности, поля цены и поля инвентаря. У меня нет доступа к коду или базе данных. Кто-нибудь знает, есть ли расширение в Chrome или Firefox, которое может облегчить этот тип функциональности? Вот пример нужных мне данных:

Мне бы хотелось очень простое резюме, например, «Общая стоимость запасов: $ 500,00». Я бы даже не возражал, если бы это было на странице, и мне приходилось записывать каждую новую сумму и складывать их самостоятельно. Я хорошо владею jQuery, и поэтому, если бы я мог как-то написать это сам, я бы даже не возражал против указателя в этом направлении. Это должно быть расширение, так как у меня нет прямого доступа к странице.

Редактировать: Может ли скрипт greasemonkey сделать это?

Ответы [ 2 ]

2 голосов
/ 15 января 2011

Если вы хорошо владеете jQuery и знаете, как извлечь данные из этой таблицы и выполнить свои собственные вычисления, вам будет очень легко это сделать!Пожалуйста, обратитесь к документации, в ней есть вся информация, необходимая для выполнения следующих действий:

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

В одну сторону

Если вы хотите, чтобы это всегда отображало итогикогда вы посещаете эту страницу, вы можете использовать скрипт содержания .Мир скриптов контента будет напрямую связан с 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

Другой путь

Если вы хотите показывать итоги только тогда, когда вы нажимаете на кнопку в браузере.Вы можете использовать действие браузера .Вам понадобится фоновая страница , чтобы слушать, когда вы нажимаете на это действие браузера.По сути, скелет для этого будет:

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 голос
/ 15 января 2011

Вы можете попробовать что-то вроде этого и сохранить как букмарклет:

$('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;
}

Это не проверено , но должно дать вам общее представление. Используйте генератор букмарклетов (есть много ), вставьте свой JavaScript и сохраните его как букмарклет. Затем просто нажмите на ссылку букмарклета при просмотре любой страницы, и вы получите предупреждение, отображающее общее количество. Возможные улучшения включают сохранение значения в localStorage с использованием URL-адреса в качестве ключа (чтобы вы не дублировали и могли отслеживать совокупные итоги).

...