我正在使用GreaseMonKey脚本工作,并希望从属性中调整特定值。问题是,我想要的属性值是分页的。我尝试更改URL,以查看它是否可以列出一页中的所有内容,但没有运气。它总是限制每页仅40的视图。
我想知道实现此目的的最佳方法是否是通过使用和然后语句。
来增加URL中的值。例如,如果存在某个元素(.Standard-Row),则URL中的 start = 0 将增加40 to start = 40 ,然后如果再次存在特定元素(.Standard-Row),则自动重新加载增量的URL并再次扫描,而另外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>');
事先感谢您的任何建议。
使用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==