NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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.

Aktivity
Avatar
Václav Novák:14.11.2016 20:46

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.11.2016 20:46
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Václav Novák
Petr Šťastný:14.11.2016 21:25

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
14.11.2016 21:25
Avatar
Václav Novák:14.11.2016 21:42

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.11.2016 21:42
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Václav Novák
Petr Čech:14.11.2016 21:43

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.11.2016 21:44
Nahoru Odpovědět
14.11.2016 21:43
the cake is a lie
Avatar
Václav Novák:14.11.2016 21:47

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.11.2016 21:47
Avatar
Odpovídá na Václav Novák
Josef Kuchař - Pepa489:14.11.2016 21:49

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

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

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.11.2016 21:51
Avatar
Václav Novák:14.11.2016 22:00

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

 
Nahoru Odpovědět
14.11.2016 22:00
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Václav Novák
Petr Čech:14.11.2016 22:14

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.11.2016 22:14
the cake is a lie
Avatar
Václav Novák:14.11.2016 22:25

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.11.2016 22:25
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Václav Novák
Petr Čech:14.11.2016 22:32

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

Nahoru Odpovědět
14.11.2016 22:32
the cake is a lie
Avatar
Václav Novák:14.11.2016 22:34

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

 
Nahoru Odpovědět
14.11.2016 22:34
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Václav Novák
Petr Čech:14.11.2016 22:51

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.11.2016 22:51
the cake is a lie
Avatar
Václav Novák:14.11.2016 23:05

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.11.2016 23:05
Avatar
Nahoru Odpovědět
15.11.2016 5:52
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Václav Novák:15.11.2016 7:42

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.11.2016 7:42
Avatar
Odpovídá na Václav Novák
Libor Šimo (libcosenior):15.11.2016 9:45

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.11.2016 9:45
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Václav Novák
Libor Šimo (libcosenior):15.11.2016 9:52

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.11.2016 9:52
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Petr Čech
Neaktivní uživatel:15.11.2016 11:40

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

Nahoru Odpovědět
15.11.2016 11:40
Neaktivní uživatelský účet
Avatar
Václav Novák:16.11.2016 20:58

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

 
Nahoru Odpovědět
16.11.2016 20:58
Avatar
Václav Novák:16.11.2016 23:16

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.11.2016 23:16
Avatar
Václav Novák:16.11.2016 23:16

Tak kde tedy dělám chybu?

 
Nahoru Odpovědět
16.11.2016 23:16
Avatar
Odpovídá na Václav Novák
Libor Šimo (libcosenior):17.11.2016 8:28

Zacni studovat miestny jquery serial.

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

Studoval…

 
Nahoru Odpovědět
17.11.2016 9:39
Avatar
Václav Novák:17.11.2016 11:28

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

 
Nahoru Odpovědět
17.11.2016 11:28
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Václav Novák
Petr Čech:17.11.2016 15:59

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.11.2016 16:01
Nahoru Odpovědět
17.11.2016 15:59
the cake is a lie
Avatar
Odpovídá na Petr Čech
Václav Novák:17.11.2016 16:13

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.11.2016 16:13
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Václav Novák
Petr Čech:17.11.2016 16:43

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.11.2016 16:45
Nahoru Odpovědět
17.11.2016 16:43
the cake is a lie
Avatar
Václav Novák:18.11.2016 23:16

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