Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
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 Stastny
Redaktor
Avatar
Odpovídá na Václav Novák
Petr Stastny: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  -1 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
Odpovídá na Václav Novák
Petr Čech (czubehead):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
Why so serious? -Joker
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
Odpovídá na Václav Novák
Petr Čech (czubehead):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
Why so serious? -Joker
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
Odpovídá na Václav Novák
Petr Čech (czubehead):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
Why so serious? -Joker
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
Odpovídá na Václav Novák
Petr Čech (czubehead):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
Why so serious? -Joker
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
Taskkill
Šéfredaktor
Avatar
Odpovídá na Petr Čech (czubehead)
Taskkill:15.11.2016 11:40

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

 
Nahoru Odpovědět  +1 15.11.2016 11:40
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
Odpovídá na Václav Novák
Petr Čech (czubehead):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
Why so serious? -Joker
Avatar
Odpovídá na Petr Čech (czubehead)
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
Odpovídá na Václav Novák
Petr Čech (czubehead):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
Why so serious? -Joker
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.