Diskuze: Načtení stránky pro její následné zpracování
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 29 zpráv z 29.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Tohle vůbec v JS nejde, maximálně bys to mohl udělat přes nějaký server, šlo by to třeba v ASP.NET
No, opravdu ne? Dám příklad, třeba na google.cz potřebuji, aby se mi do vyhledávače dalo slovo „itnetwork“, přičemž ten vyhledávací bar má id třeba „vyhledávání“…
Stránky že stejné domény a stejného protokolu (http/https) se dají
načítat pomocí AJAXu. Skvěle to řeší třeba jQuery, ten čistě JS postup
je takový dost kostrbatý...
Ale kvůli XXS útokům nelze načítat data z jiné domény.
No, mně by stačily stránky jen z jedné domény a váš jQuery tutoriál jsem si také prošel, takže jak?
Ale splňuješ to pravidlo stejné domény?
Prostě a jednoduše JS potřebuji na jakési vyplňování políček a klikání na checkboxy za jistých podmínek. Vše se bude dít pod jedním webem a doménou.
Nebo na takovéto vyplňování doporučujete jiný jazyk?
Asi úplně nechápu, co přesně chceš udělat... a. tuším, že zády tutoriál na AJAX není, podívej se na jQuery API.
Jiný jazyk si ani vybrat nemůžeš, na webu jede bohužel u klienta akorát tak strašná věc, jako JS
Potřebuji prostě vyplnit pár formulářů (na jedné doméně) a do těch
políček vkládat čísla podle nějakých podmínek, co si tam dám.
Já se akorát ptám, jak tomu JS vlastně říct, na jaké web. stránce má
pracovat.
A ta doména je tvá, na tvém webu? S cizím webem nijak interagovat (v JS) nejde.
Právě že není no.
Tak jakou by jste tedy navrhl alternativu?
Neexistuje alternativa, takto by se daly vykrádat data z čeho by tě napadlo.
Resp. existuje, ale určitě se nedostaneš k datům např. přihlášeného
uživatele. Něco takového se dá udělat jako destopová appka se nějakým
WebBrowserem, který s obsahem manipulovat může, nebo se dají prostě
posílat requesty a číst je jako HTML ale to je pakárna.
Jestli máš nějaké nekalé úmysly, můžeš to vzdát, prohlížeče jsou
dobře zabezpečené proti spouštění skriptů na cizí doméně. Některé
stránky jsou třeba děravé a umožní ti to, ale neměly by.
A tlačítko odpovědět má nějaký účel...
Já nechci ničí data vykrádat, asi jste mě špatně pochopil. Prostě potřebuji monotónně vyplnit např. formulář. Nijak nebudu pracovat s obsahem webu, jen prostě chci, aby mi ten skript do kolonky, kde po chtějí např. jméno napsal slovo „Václav“ a pak do druhé kolonky, kde chtějí třeba příjmení slovo „Novák“, chápete? Nijak nebudu manipulovat s obsahem webu, jen chci do těch inputů, co jsou na tom webu automaticky doplnit nějaká data závislá třeba na podmínce.
Myslis nieco taketo?
http://www.itnetwork.cz/…7ba9e0c5bcc3
Ano, budu to asi dělat pod TamperMonkey nebo vaším GreaseMonkey.
Teď už jen jak má ten JS ty formuláře najít, do @include dám např. www.google.cz/*, ale to, kde
já potřebuji pracovat se třeba jednou www.google.cz/formular52 a podruhý třeba www.google.cz/6998form.
V tej diskusii, čo som ti napísal, je aj ukážka ako sa to robí. Teraz to je už len v tvojich rukách, pretože len ty vieš, čo potrebuješ.
Ešte jedna info.
Predpokladám, že vieš ako JS alebo jQuery pracuje s elementami html stránky
(DOM).
Ďalej predpokladám, že si vieš pozrieť kód stránky a vyčítať z nej
potrebné ID a pod., aby si s nimi mohol v scripte pracovať.
Pre ilustráciu prikladám časť mojho scriptu:
// ==UserScript==
// @name Základné data
// @namespace
// @include https://www.mosr.sk/zmluvy/sysadm/art.php?adm_action=3&artpro=9&ID=26328
// @version 1
// @grant none
// ==/UserScript==
var pom;
var dod = [
["+++","",""],
["A.T.Servis, a.s.","36253855",""],
["ALVEST, s.r.o.","36318957",""],
["AQUAFIND, s.r.o.","47145714","vyhľadanie únikov vody elektroakustickým zariadením"],
["Ján Berky BERK - STAV","10993169","oprava dna kanalizačnej splaškovej šachty"],
......
......
["Metrostav a.s.","31792693","oprava letiskových plôch"],
["EV - mont, s.r.o.","46736417","oprava prívodu el.energie"],
["REWID s.r.o.","44623267","OP a OS el.zariadení"],
["EUROFINS BEL/NOVAMANN s.r.o.","31329209","rozbor odpadových vôd"]
];
function doplnData() {
dod.sort();
var velkost = dod.length;
var sel = $('<select>');
sel.css({"position":"absolute","top":"120px","right":"40px","width":"300px"});
for (var i in dod) {
sel.append($('<option>').text(dod[i][0]));
}
sel.appendTo('body');
$(sel).change(function(){
var values = $('option:selected').text();
for (var i = 1; i < velkost; i++) {
if (values == dod[i][0]) {
$('#frm_edit_art_Dodavatel').val(dod[i][0]);
$('#frm_edit_art_ICO').val(dod[i][1]);
$('#frm_edit_art_Predmet').val(dod[i][2]);
pom = i;
}
}
localStorage.subor = pom;
});
}
function zakladneData() {
var d = new Date();
var datum = d.getDate() + "." + (d.getMonth() + 1) + "." + d.getFullYear();
$('#frm_edit_nazov').val(" SPO ZV");
$('#art_Datum').val(datum);
$('#frm_edit_art_Obstaravatel').val("Stredisko prevádzky objektov Zvolen");
$('#frm_edit_nazov').focus();
}
function vratPosledne() {
var pom = localStorage.subor;
$('select').attr('selectedIndex', pom);
$('#frm_edit_art_Dodavatel').val(dod[pom][0]);
$('#frm_edit_art_ICO').val(dod[pom][1]);
$('#frm_edit_art_Predmet').val(dod[pom][2]);
}
$(function() {
zakladneData();
doplnData();
vratPosledne();
});
Něco tu je jen na jQuery už nezbyla motivace.
Tak už píšu, ale mám problém to vyhledat, jak replacnu string v nějakém inputu?
Tak už vím, ale naprosto nechápu, proč, když mi volání přes ID jde, ale přes classu ne. Př. na hlavní stránce www.google.cz
Toto mi hezky vyplní:
$("#lst-ib").val("Haha");
Ale tohle nejde:
$(".gsfi").val("Haha");
Tak kde tedy dělám chybu?
Zacni studovat miestny jquery serial.
Jako nutně nepotřebuji vědět, proč to nejde, jen ze zvědavosti…
Používej odpovědět!
Nejde to proto, abys právě nemohl třeba vykrádat data z jiných stránek a pod. Pokud máš nějaký přístup k tomu serveru, tak se tuším nějak dá nastavit crossorigin, což by tvůj problém vyřešilo.
A co bych na tom vykradl? To jméno classy se dá naprosto jednoduše pomocí
Ctrl + Shift + I získat. A přes ID to jde, tak proč by to nešlo přes
classu?
Automatický zadávání textu do vyhledávače Google není žádný
vykrádání přeci.
Tady třeba nic, ale představ si, jakou katastrofu by napáchalo, kdybys přišel na nějaký web zatímco bys byl přihlášený na Facebooku. Kdyby mohl s tím obsahem (kde bys byl přihlášený) dotyčný web manipulovat, nedejbože právě spouštět skripty, asi si dokážeš představit, jaké škody by to napáchalo. Proto nemohou weby přistupovat pořádně k jiným doménám.
To, že ty to myslíš třeba dobře je hezké, ale jde o to, že kdyby šlo
to, o co se pokoušíš, jednalo by se o strašlivou bezpečnostní trhlinu,
proto by se ti nemělo podařit rozchodit to pomocí JS. Pravděpodobně by se
dal napsat serverový skript třeba v PHP, C# a pod., který by s tím pracoval
interně, ale to je také strašně špatně (nestabilní).
Zkrátka svůj skript na cizím dobře napsaném webu nespustíš.
Mimochodem, toto je odpověď na původní příspěvek...
Ještě tedy potřebuji jednu věc, potřebuji nějak získat tento element:
<a class="btn_green" href="javascript:void(0)" onclick="ShowPopup( 440, "some_text", "nějaký_text" ); return false;">
<span>Nějaký text</span>
</a>
Je tam ještě pár elementů nad tím (parenti), pokud budou třeba, tak dodám.
Zobrazeno 29 zpráv z 29.