Как написать сценарий Greasemonkey для обработки __doPostBack () - PullRequest
0 голосов
/ 01 ноября 2010

Я прихожу из области научных вычислений, и у меня есть история с некоторыми популярными и непопулярными (специальными) языками программирования, но я совершенно чужд клиентскому программированию и JavaScript.

Ранее я написал несколько тривиальных JavaScript-кода для своих настроек Greasemonkey, но это все.

Мой вопрос касается: http://www.ise.org/sirketler/sirketler.aspx

Я пытаюсь получить все данныео ценных бумагах и компаниях из таблицы, приведенной в URL-адресе выше, на котором находится турецкая Стамбульская фондовая биржа.

Эти данные приведены в виде таблицы, классифицированной по буквам, с которых начинается название компании, и максимум 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 Ответ

1 голос
/ 02 ноября 2010

Надеюсь, этот пример прояснит ваш путь:

// ==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"));
    }
});
...