【问题标题】:Make javascript execute on Amazon after hitting "Next Page"?点击“下一页”后让javascript在亚马逊上执行?
【发布时间】:2013-07-13 01:46:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript ajax amazon greasemonkey


    【解决方案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");
        }
    }
    

    参考:

    【讨论】:

      猜你喜欢
      • 2014-02-22
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 2016-08-11
      • 2017-05-03
      • 2016-11-26
      • 2012-12-08
      • 1970-01-01
      相关资源
      最近更新 更多