我正在研究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>');
提前感谢任何建议。
答案 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==