كيفية كتابة نص Greasemonkey للتعامل مع __dopostback ()
-
28-09-2019 - |
سؤال
أنا قادم من خلفية حساب علمية ولدي بعض التاريخ مع لغات البرمجة الشهيرة وغير الشعبية (المخصصة) ، لكنني غريبة تمامًا على البرمجة الجانبية للعميل وجافا سكريبت.
لقد كتبت بعض 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','')
وما إلى ذلك للصفحة الأولى والثانية والثالثة من هذا الجدول على التوالي.
لقد حاولت إجراء تسلسل هذا عن طريق إصدار __doPostBack()
طريقة لمجموعة معينة من الحروف والأرقام عن طريق تسلسلها إلى السلسلة الثابتة أعلاه لكنها لم تنجح.
فكيف يمكنني استخدام __doPostBack()
الطريقة وإلحاق كل هذه الجداول الفرعية الناتجة والحصول على البيانات الكلية؟
هل هناك مورد للقراءة لمثل هذا النوع من المهام؟
أعتذر عن سؤال الهواة من جميع المتسللين JS.
المحلول
نأمل أن ينير هذا المثال طريقك:
// ==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"));
}
});