1

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

我想知道实现这一点的最佳方法是否是通过使用ifthen语句来增加 URL 中的值。

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

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

下面是我要增加的 URL。我想增加的 URL 部分是“ 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>');

提前感谢您的任何建议。

4

1 回答 1

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);
    }
}


注意:
请务必使用@grantGM_ 函数的指令。像这样:

// ==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==
于 2012-11-04T22:20:41.093 回答