Diskuze: Načtení stránky pro její následné zpracování

JavaScript JavaScript Načtení stránky pro její následné zpracování

Avatar
Václav Novák:

Zdravím,
jsem začátečník a potřebuji takovou malou radu.
Prošel jsem si vaše „tutoriály“ na JS, a nějak si tak nevzpomínám, že byste vůbec zmínili, jak nějakou „externí“ stránku ve scriptu načíst, abych z ní dále např. mohl vybírat elementy…
Děkuji.

 
Odpovědět 14. listopadu 20:46
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Václav Novák
Petr Stastny:

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

 
Nahoru Odpovědět  -1 14. listopadu 21:25
Avatar
Václav Novák:

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í“…

 
Nahoru Odpovědět 14. listopadu 21:42
Avatar
Odpovídá na Václav Novák
Petr Čech (czubehead):

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.

Editováno 14. listopadu 21:44
Nahoru Odpovědět 14. listopadu 21:43
Why so serious? -Joker
Avatar
Václav Novák:

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? :)

 
Nahoru Odpovědět 14. listopadu 21:47
Avatar
Odpovídá na Václav Novák
Josef Kuchař (Pepa489):

Ale splňuješ to pravidlo stejné domény?

Nahoru Odpovědět 14. listopadu 21:49
2x piš, jednou debuguj
Avatar
Václav Novák:

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.

 
Nahoru Odpovědět 14. listopadu 21:51
Avatar
Václav Novák:

Nebo na takovéto vyplňování doporučujete jiný jazyk?

 
Nahoru Odpovědět 14. listopadu 22:00
Avatar
Odpovídá na Václav Novák
Petr Čech (czubehead):

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

Nahoru Odpovědět 14. listopadu 22:14
Why so serious? -Joker
Avatar
Václav Novák:

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.

 
Nahoru Odpovědět 14. listopadu 22:25
Avatar
Odpovídá na Václav Novák
Petr Čech (czubehead):

A ta doména je tvá, na tvém webu? S cizím webem nijak interagovat (v JS) nejde.

Nahoru Odpovědět 14. listopadu 22:32
Why so serious? -Joker
Avatar
Václav Novák:

Právě že není no.
Tak jakou by jste tedy navrhl alternativu?

 
Nahoru Odpovědět 14. listopadu 22:34
Avatar
Odpovídá na Václav Novák
Petr Čech (czubehead):

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...

Nahoru Odpovědět 14. listopadu 22:51
Why so serious? -Joker
Avatar
Václav Novák:

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.

 
Nahoru Odpovědět 14. listopadu 23:05
Avatar
Nahoru Odpovědět 15. listopadu 5:52
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Václav Novák:

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.

 
Nahoru Odpovědět 15. listopadu 7:42
Avatar
Odpovídá na Václav Novák
Libor Šimo (libcosenior):

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š. ;-)

Nahoru Odpovědět 15. listopadu 9:45
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Václav Novák
Libor Šimo (libcosenior):

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();
});
Nahoru Odpovědět 15. listopadu 9:52
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na Petr Čech (czubehead)
Taskkill:

Něco tu je :) jen na jQuery už nezbyla motivace.

 
Nahoru Odpovědět  +1 15. listopadu 11:40
Avatar
Václav Novák:

Tak už píšu, ale mám problém to vyhledat, jak replacnu string v nějakém inputu?

 
Nahoru Odpovědět 16. listopadu 20:58
Avatar
Václav Novák:

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");
 
Nahoru Odpovědět 16. listopadu 23:16
Avatar
Václav Novák:

Tak kde tedy dělám chybu?

 
Nahoru Odpovědět 16. listopadu 23:16
Avatar
Odpovídá na Václav Novák
Libor Šimo (libcosenior):

Zacni studovat miestny jquery serial.

Nahoru Odpovědět 17. listopadu 8:28
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Václav Novák:

Studoval…

 
Nahoru Odpovědět 17. listopadu 9:39
Avatar
Václav Novák:

Jako nutně nepotřebuji vědět, proč to nejde, jen ze zvědavosti…

 
Nahoru Odpovědět 17. listopadu 11:28
Avatar
Odpovídá na Václav Novák
Petr Čech (czubehead):

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.

Editováno 17. listopadu 16:01
Nahoru Odpovědět 17. listopadu 15:59
Why so serious? -Joker
Avatar
Odpovídá na Petr Čech (czubehead)
Václav Novák:

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.

 
Nahoru Odpovědět 17. listopadu 16:13
Avatar
Odpovídá na Václav Novák
Petr Čech (czubehead):

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...

Editováno 17. listopadu 16:45
Nahoru Odpovědět 17. listopadu 16:43
Why so serious? -Joker
Avatar
Václav Novák:

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, &quot;some_text&quot;, &quot;nějaký_text&quot; ); 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.

 
Nahoru Odpovědět 18. listopadu 23:16
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 29 zpráv z 29.