点击“下一页”后,在亚马逊上执行javascript?

时间:2013-07-13 01:46:34

标签: javascript ajax amazon greasemonkey

我有一个在亚马逊的结果页面上执行的Greasemonkey脚本。但是,由于“下一页”按钮会动态更新结果,因此脚本仅在第一次加载页面时执行,而不是在单击“下一页”按钮后执行。

例如,如果我转到像this one这样的亚马逊页面并且我的脚本运行以对结果执行某些操作,那么当我单击页面底部的“下一页”时,脚本不会运行因为结果是动态更新的。

当用户点击“上一页”或“下一页”链接时,每当加载新集时,如何让我的脚本应用于新的结果集?

1 个答案:

答案 0 :(得分:1)

Amazon使用AJAX更改结果,并且不会触发hashchange事件甚至更改标题。

无论如何;对于这种事情,请使用the waitForKeyElements() utility

例如,这是一个简单的脚本,用于替换结果颜色:

// ==UserScript==
// @name     _Amazon: Stripe Search Results
// @include  http://www.amazon.com/s/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/
waitForKeyElements ("#searchTemplate div.results div.result", stripeAlternateRows);

function stripeAlternateRows (jNode) {
    var rezRow  = jNode.attr ("id").replace (/result_/, "");
    rezRow      = parseInt (rezRow, 10)  ||  0;

    if (rezRow % 2) {
        //-- Color every odd row.
        jNode.css ("background", "#EEFFEE");
    }
}

参考: