增加URL中的值,以便从paginatied的属性中解析数据

时间:2012-11-04 18:50:01

标签: jquery greasemonkey

我正在研究Greasemonkey脚本,并想从属性中计算一个特定的值。问题是,我想要的属性值是分页的。我已经尝试更改URL以查看它是否可以在一个页面中列出所有内容,但没有运气。它始终限制为每页只有40个视图。

我想知道实现这一目标的最佳方法是通过使用 if then 语句来增加URL中的值。

例如,如果存在某个元素(.standard-row),则URL中的 start = 0 将增加40到 start = 40 ,然后自动重新加载增加的URL并再次扫描,如果特定元素(.standard-row)再次出现,则再增加40,再到 start = 80 。一直存储属性值从每个页面获取它。

当特定元素(.standard-row)不再可见时,它将移动到计算它收集的属性值。

以下是我正在尝试增加的网址。我要增加的网址部分是“ start = ”。

https://play.google.com/store/account?start=0&num=40

我在下面列出的代码就是我用来计算属性值的代码。它适用于一个页面,但是,我想从分页页面中获取所有属性值。如果可能的话。

var total = 0;
$("#tab-body-account .rap-link").each(function() {
  var price = +($(this).attr("data-docprice").replace(/[^\d\.]/g, ""));
  total += price;  
});
$('.tabbed-panel-tab').before('<div id="SumTotal">*Combined Value: $'+ total.toFixed(2) +'</div>');

提前感谢任何建议。

1 个答案:

答案 0 :(得分:2)

使用GM_setValue()GM_getValue()存储页面之间的总数。检查start参数的状态以及是否存在.standard-row元素。

这样的事情:

var startParam      = location.search.match (/\bstart=(\d+)/i);
if (startParam) {
    var totalPrice  = 0;
    var startNum    = parseInt (startParam[1], 10);
    if (startNum    === 0) {
        GM_setValue ("TotalPrice", "0");
    }
    else {
        totalPrice  = parseFloat (GM_getValue ("TotalPrice", 0) );
    }

    $("#tab-body-account .rap-link").each( function () {
        var price   = $(this).attr ("data-docprice").replace (/[^\d\.]/g, "");
        if (price) {
            price   = parseFloat (price);
            if (typeof price === "number") {
                totalPrice += price;
            }
        }
    } );
    //console.log ("totalPrice: ", totalPrice.toFixed(2) );

    $('.tabbed-panel-tab').before (
        '<div id="SumTotal">*Combined Value: $'+ totalPrice.toFixed(2) +'</div>'
    );

    GM_setValue ("TotalPrice", "" + totalPrice);

    if ( $(".standard-row").length ) {
        startNum       += 40;
        var nextPage    = location.href.replace (
            /\bstart=\d+/i, "start=" + startNum
        );
        location.assign (nextPage);
    }
}


注意:
务必使用@grant指令作为GM_函数。像这样:

// ==UserScript==
// @name     _YOUR SCRIPT NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant    GM_setValue   
// @grant    GM_getValue   
// ==/UserScript==