代码之家  ›  专栏  ›  技术社区  ›  oakenshield1

如何编写Greasemonkey脚本来处理doPostBack()

  •  0
  • oakenshield1  · 技术社区  · 15 年前

    我来自一个科学计算背景,有一些流行和非流行(即席)编程语言的历史,但我完全不喜欢客户端编程和JavaScript。

    我以前为Greasemonkey设置编写过一些简单的JavaScript,但仅此而已。

    我的问题是: http://www.ise.org/sirketler/sirketler.aspx

    我试图从上面的网址(土耳其斯坦布尔证券交易所的网站)中给出的表格中获得所有关于证券和公司的数据。

    这个数据是在一个网格表中给出的,根据公司的名字开始的字母分类,每个人可以看到最多10行。同样在页面的右下角,也会写下此信息传播的页数。

    例如,您可以从Firebug控制台调用:

    __doPostBack('ctl00$cphContent$ctl00$lbtnT','')
    

    要使公司以“T”开头,您可以通过发出以下命令来浏览这些表的选项卡:

    __doPostBack('ctl00$cphContent$ctl00$radGridSirketler$ctl00$ctl03$ctl01$ctl05','')
    __doPostBack('ctl00$cphContent$ctl00$radGridSirketler$ctl00$ctl03$ctl01$ctl07','')
    __doPostBack('ctl00$cphContent$ctl00$radGridSirketler$ctl00$ctl03$ctl01$ctl09','')
    

    本表第1页、第2页、第3页等。

    __doPostBack() 方法将给定的字母和数字数组连接到上面的固定字符串,但没有成功。

    __doPostBack() 方法并附加所有这些生成的子表并获取总体数据?

    我为所有JS黑客的业余问题道歉。

    1 回复  |  直到 15 年前
        1
  •  1
  •   w35l3y    15 年前

    希望这个例子能启发你:

    // ==UserScript==
    // @name           Examples : sirketler
    // @namespace      http://gm.wesley.eti.br/examples
    // @description    Simulation of an aspx PostBack request
    // @include        http://www.ise.org/sirketler/sirketler.aspx
    // @require        http://userscripts.org/scripts/source/63808.user.js
    // @require        http://userscripts.org/scripts/source/89515.user.js
    // ==/UserScript==
    
    AspxPostBackRequest({
        "url" : "http://www.ise.org/sirketler/sirketler.aspx",
        "manager" : "ctl00$ScriptManager1",
        "eventTarget" : "ctl00$cphContent$ctl00$lbtnT",
        "callback" : function(xhr)
        {
            var content = document.createElement("div");
            content.innerHTML = xhr.responseText.split("|")[3];
    
            alert(xpath("./div/table/tbody/tr", content).map(function(row)
            {
                return [].slice.call(row.cells).map(function(col)
                {
                    return col.textContent.replace(/^\s+|\s+$/gm, "");
                });
            }).join("\n"));
        }
    });