Como escrever um script Greasemonkey para lidar com __dopostback ()
-
28-09-2019 - |
Pergunta
Estou vindo de um histórico de computação científica e tenho alguma história com algumas linguagens de programação populares e não populares (ad hoc), mas sou completamente estranho à programação e JavaScript do lado do cliente.
Já escrevi um javascript trivial para minhas configurações de Greasemonkey antes, mas isso é tudo.
Minha pergunta diz respeito: http://www.ise.org/sirketler/sirketler.aspx
Estou tentando obter todos os dados sobre valores mobiliários e empresas da tabela fornecida no URL acima, que é o local da Bolsa de Valores de Istambul turca.
Esses dados são fornecidos em uma tabela de grade classificados de acordo com as letras que o nome da empresa começa e no máximo 10 linhas por grade é dada como se pode ver. Também no canto inferior direito da página, lá escreve quantas páginas essas informações estão espalhadas.
Por exemplo, você pode ligar do console do Firebug:
__doPostBack('ctl00$cphContent$ctl00$lbtnT','')
Para levar as empresas começando com 't' e você pode navegar nas guias dessas tabela emitindo:
__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','')
etc. para 1º, 2º e 3º páginas desta tabela, respectivamente.
Eu tentei serializar isso emitindo __doPostBack()
Método para uma determinada matriz de letras e números concatenando -os na sequência fixa acima, mas não foi bem -sucedida.
Então, como posso usar __doPostBack()
Método e anexar todas essas sub tabletas resultantes e obter os dados gerais?
Existe algum recurso para ler para esse tipo de tarefas?
Peço desculpas pela minha pergunta amadora de todos os hackers do JS.
Solução
Espero que este exemplo esclareça seu caminho:
// ==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"));
}
});