Autor Zpráva
valecekm
Profil
Zdravím zde všechny přítomné na fóru a prosím o radu.
Řekněme, že jsem pomocí DOMu vložil do stránky (do <body>, nikoli do <head>) Javascript s výsledky a to konkrétně tento, jedná se prostě o grafy které jedou na jQuery. Vložení do stránky pomocí DOMu není řešeno přes jQuery, ale vlastním javascriptem a to absolutně bez problémů.

Problém ovšem nastává v tom, že takto vložený JS s výsledky(nemusí to být výše uvedené grafy, ale klidně např i obyčejný alert() ) NEFUNGUJE, ikdyž se do zdrojového kódu dostane. Zkoušel jsem i spouštění jednoduchých skriptů pomocí jQuery fcí live(), či třídou, ale myslímsi že není podstatné toto zde teď rozebírat zda třída nebo fce apod.(pro ty kdo by chtěli slůvkařit).

pozn.: samotné jádro grafů je již připojeno v hlavičce dokumentu klasickým způsobem pro připojení JS, ale jak jsem napsal nefunguje ani obyčejný <script>alert("Ahoj");</script>, pokud je vložen do stránky pomocí DOMu, takže v grafech problém snad nebude.

Pokud by někdo věděl v čem problém vězí a případně by ho dokázal vyřešit(jak spustit javascript přidaný do stránky pomocí DOM), tak budu moc rád když mi poskytne radu, jak na to(i třebas přes jQuery).

Předem děkuji za případné odpovědi.
_es
Profil
valecekm:
Pokud by někdo věděl v čem problém vězí a případně by ho dokázal vyřešit
Na to si dal málo informácií, chcelo by to živú ukážku.

jsem pomocí DOMu vložil do stránky“ „pokud je vložen do stránky pomocí DOMu
Ako tam ten JS „pomocou DOMu“ vkladáš?
valecekm
Profil
_es:
Živou ukázku dát nemůžu, tento systém je tvořen pro jednu firmu a data jsou velmi citlivá. Mohu ovšem snad napodobyt zde, ve zpracování výsledků není problém, protože script se do ZDROJOVÉHO KÓDU dostane tak jak má a SPRÁVNĚ( ve zdrojovém kódu vypadá tak jak vypadat má, funkčnost na samostatné zkušební stránce odzkoušena a bezproblému...i ty grafy fungují, pokud jsou hned na začátku vloženy do HTML aniž by se musely vkládat pomocí DOMU) tudíž v JS problém není, jde spíše o chování DOMU a to takové, aby tento script spustil a nebránil mu se spustit.

Připadne mi to jako kdyby DOM zakázal spuštění jakéhokoli javascriptu.

zde je akorát ono načítání či vkládání pomocí DOM(v základní verzi jednoduché, ale prakticky stejné).

Ještě jednou poukazuji nato, že v samotném scriptu problém není(jakýkoliv script, třebas <script>alert("ahoj");</script> nebo i jakýkoli jiný), do zdroj. kódu se dostane a když zdroj. kód zkopíruji a vložím do úplně samostatné pokusné stránky, tak funguje.
Davex
Profil
valecekm:
Živou ukázku dát nemůžu, tento systém je tvořen pro jednu firmu a data jsou velmi citlivá.
Nezajímá nás celý kód. Zajímá nás živá ukázka problému.
_es
Profil
valecekm:
ale jak jsem napsal nefunguje ani obyčejný <script>alert("Ahoj");</script>
Nepochopil si princíp skriptu z toho článku.
PHP má vrátiť kód JavaScriptu, ktorý je následne spustený (funkcia stahniData), teda sa tam žiadne značky <script> vkladať nemajú.
Trochu lepšiu funkciu na stiahnutie externého skriptu máš napríklad tu (funkcia loadScript).
valecekm
Profil
_es:
Doufám že se na mě za to nenazlobíš, že ti teď budu Tvé uvážení, že jsem to nepochopil obracet v opak, ale pochopil jsem princip tohoto skriptu a to velmi dobře, když jsem byl schopnej si ho sám sobě přispůsobit. Ano PHP vráti upravenou JS fci vypisText(txt, kam_txt), kde do elementu s určitým ID(kam_txt) vloží ona stažená data(txt) a tyto data mohou obsahovat html tagy, a když mohou obsahovat html tagy a vše funguje tak jak má, tak tam samozřejmě bez problémů projde i část např. tato:<div id="vypis_1">Schválně jestli se spustím</div><script>alert("To koukáš!");</script>. Tato část se opravdu dostane do NOVĚ VYGENEROVANÉHO ZDROJOVÉHO KÓDU SAMOTNÉ STRÁNKY, ovšem s tím rozdílem, že spuštení JS hlášky neproběhne.

Jinak děkuji všem, co se mi snažili pomoct i _es :-), ale již jsem nepochopitelný důvod, proč se nespouští vkládaný JS vyřešil a to tak, že v prom. txt prohledám, jestli je nějaký javascript v datech(v prom. txt) přenášen, vyjmu ho, a tento javascript ještě v samotné fci vypisText(txt, kam_txt) spustím a vše proběhne vpořádku.

Ještě jednou díky všem za ozvání se k mému dotazu.
_es
Profil
valecekm:
pochopil jsem princip tohoto skriptu a to velmi dobře, když jsem byl schopnej si ho sám sobě přispůsobit. Ano PHP vráti upravenou JS fci vypisText

Tak si to pochopil zle, na nahratie externého skriptu v tom článku slúži funkcia stahniData a potom je ten skript hneď spustený. Funkcia vypisText je na výpis textu, nie na vkladanie JS kódu.

nepochopitelný důvod, proč se nespouští vkládaný JS
Ten dôvod je vcelku pochopiteľný. Značky <script>, vkladané cez zmenu vlastnosti innerHTML, nefungujú, ak by si o tom niečo hľadal, tak by si to našiel. JS kód musíš vkladať inak - napríklad pomocou funkcie stahniData z toho článku. Alebo. ak ho chceš vkladať ako text, tak napríklad pomocou tejto funkcie.

<div id="vypis_1">Schválně jestli se spustím</div><script>alert("To koukáš!");</script>. Tato část se opravdu dostane do NOVĚ VYGENEROVANÉHO ZDROJOVÉHO KÓDU SAMOTNÉ STRÁNKY, ovšem s tím rozdílem, že spuštení JS hlášky neproběhne.
To vyzerá na zle navrhnutú aplikáciu - z akého dôvodu to je treba takto mixovať?

vyřešil a to tak, že v prom. txt prohledám, jestli je nějaký javascript v datech(v prom. txt) přenášen, vyjmu ho, a tento javascript ještě v samotné fci vypisText(txt, kam_txt) spustím a vše proběhne vpořádku.
Ak v tom kóde budú definície nejakých premenných či funkcií, tak to fungovať nemusí, alebo to môže fungovať zle.
valecekm
Profil
_es:
To vyzerá na zle navrhnutú aplikáciu - z akého dôvodu to je treba takto mixovať?
protože se nepřenáší jen čistý text a nebo jen script, ale přenášejí se oba dva např zároveň. Data do těch grafů, pokud jsi se díval, tak jsou ve formě pole v javascriptu, data jsou řekněme od různých subjektů uložena v db, tudíž uživatel zavolá fci stahniData(.......) s určitými parametry, vytvoří se script, který vygeneruje PHP, PHP uvnitř vypíše fci vypisText(...) s určitými parametry a tyto parametry jsou data od subjektů(JS grafy, obyčejný text,....). Možná je tu možnost script předat samostatně rovnou do scriptu vytvořeného pomocí DOM a za něj vypsat až strohý text pomocí fce vypisText(), ale to jsem teď aktuálně zkoušel narychlo(dal jsi mi brouka do hlavy), ale nastal tam bohužel nějakej konflikt. Ale řekněme, že je jedno jestli se script s daty pro graf spustí hned, ještě před fcí vypisText() a nebo jeslti se uvnitř této fce najde a spustí se tak či tak. Prostě se musí spustit a tento script je pokaždé jiný na základě dat od určitých subjektů.
_es
Profil
valecekm:
Mám pochybnosti, či ten jQuery plugin používaš správnym spôsobom a v súlade s jeho dokumentáciou. Všetky potrebné funkcie by predsa mali byť definované vopred a zo servera by sa potom mali sťahovať už len dáta, nie ďalšie skripty.
valecekm
Profil
_es:
Všetky potrebné funkcie by predsa mali byť definované vopred
Ano stim souhlasím a jsem si vědom toho(u mě to bohužel nejde a musel jsem zvolit toto řešení, proč viz. níže), že pokud si při běhu generuji script(zatím obyčejný text), který posléze spustím jako JS script, tak se vystavuji riziku, že místo oného scriptu, který má být spuštěn tam může někdo podšoupnout něco jiného. Ale data z tohoto systému nejsou veřejná, a tudíž abych si mohl data prohlížet, tak se musím přihlásit, pokud by se potenciální utočník i přesto přihlásil(dozvěděl by se heslo) a chtěl by přes JS pro PHP podstrčit nějaký nekalý SQL dotaz, tak tyto SQL jsou kontrolovány a ošetřovány a teď mě napadla i myšlenka proti vzdálenému útoku kontrolovat i původní IP při přihlášení. A kdyby se útočníkovi podařilo prolomit cestu k serveru, tak tady jsou ochrany scriptů už málo platné a je to víceméně zbytečné, to už si se serverem může dělat prakticky cokoliv. Ale odběhnul jsem od tématu a vracím se k němu.

Ano stahovat by se měli data, ale data pro ony grafy, jsou ve formě pole, a toto pole je vloženo ve scriptu pro vytvoření celého nového grafu, který má definici jak má vypadat atd., takže abych zobrazil GRAF, musím jej pomocí JS vytvořit a nemohu vytvářet jeden a ten sám stejný graf(je potřeba více typů grafů) abych pak do něj mohl jen ony data(pole přímo umístěné v js pro vytvoření grafu, xml, csv) načítat a myslím si, že načítat do HTML šablony všechny různé varianty grafů je nesmyslné a zdržující, abych mohl pak jen měnit data. Stějně bych potom musel zavolat nějakou JS fci, aby mi vykreslila onu definovanou šablonu pro graf a naplnila do ní data, takže jsem se dostali prakticky znovu na začátek(spuštění js scriptu ve vygenerováné části stránky pomocí DOM(vypisText(....))-scripty zde nejdou spustit).

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0