Diskuze - danyk.cz
Vlákno z kategorie: Hlavní diskuze
Celkem 12 odpovědí.
17.06.2016 (11:51:47)
K # IP X
RayeR

:
Neznate nakou utilitu nebo funkcni skript, ktery z HTML souboru vyhazi vsechny javaskripty? Nasel sem par prikladu na pouziti SEDu ci AWK, napr.
sed -i 's/<script>.*<\/script>//' fileName
ale bud to neudelalo vubec nic nebo to vynechalo jen nektere tagy. Ty tagy muzou mit celou radu podob, treba
<script type="text/javascript" src="images/ajs_004.php"></script>
Pak sou na to asi naky moduly do PHP, ale ja to chci proste volat offline na naky stazeny soubory...
17.06.2016 (16:10:54)
# IP X
Igi

:
A jen vypnout javascript v prohlížeči nemůžeš?
17.06.2016 (16:22:22)
# IP X
RayeR

:
Tak samozrejme, ale chci konecne reseni - tedy vykopat z tech souboru co nejvic zbytecnejch sracek...
17.06.2016 (20:26:39)
# IP X
bkralik

:
Potřebuješ nějakej HTML (XML) parser, na kterej poštveš script, co vyhází všechny tagy script a pak to složí zpět. Uprasit si něco by nemuselo být snad tak těžký...
PS: javascript se může schovávat i v "onNěco" událostech u jednotlivejch věcí...
17.06.2016 (20:30:21)
# IP X
bkralik

:
Pokud je na daný stránce natažený jQuery, tak stačí v javascriptu spustit
$("script").remove();
a je odstraněno
Zkusim vymyslet ještě něco lepšího...
17.06.2016 (20:46:27)
# IP X
bkralik

:
Rychlej PHPčkovej úpras. Neodstraní javascript z těch on-něco událostí, ale všechny elementy script ano...
<?php
$doc = new DOMDocument();
$doc->loadHTMLFile("file.html");
$els = $doc->getElementsByTagName('script');
for ($i = $els->length; --$i >= 0; ) {
$el = $els->item($i);
$el->parentNode->removeChild($el);
}
$doc->saveHTMLFile("file_descripted.html");
18.06.2016 (01:14:16)
# IP X
RayeR

:
Sakra, to se kuli tomu musi instalovat cely PHP? HTML tidy to asi neumi, co, to sem uz taky zkoumal. Ale dik, aspon neco...
18.06.2016 (09:29:09)
# IP X
bkralik

:
No když chceš používat PHP, tak ho musíš mít nainstalovaný

Já v PHP furt něco píšu, takže ho tady mám. Z toho co jsi psal jsem usoudil, že máš k dispozici linuxovou mašinu a třeba u debianu stačí apt-get install php5-cli, což má cca 10 MB (+knihovny)
20.06.2016 (12:06:30)
# IP X
RayeR

:
Tak jasne, jen me udivuje, ze na to nekdo nenapsal nakou nativni konzolovou aplikacku a musi se to jebat pres naky php, perly a pod...
20.06.2016 (12:15:11)
# IP X
bkralik

:
To mi naopak přijde uplně jasný - koukni se, kolik řádků by to zabralo v C++, i kdybys použil nějakej hotovej XML/HTML parser...
20.06.2016 (23:26:56)
# IP X
RayeR

:
Dobra, ted sem bootnul debian, nainstaloval php5 a prohnal to tim. vypsalo to u kazdyho souboru asi 10 warningu, jakysi chybejici stredniky a jedna ukoncovaci zavorka > ale proslo to (to bylo v nakem komentari).
Jediny script tag, ktery mi prosaknul na vystup je toto:
<!-- SZM VERSION="2.0" -->
<!-- /SZM --><!--[if lte IE 6]>
<script src="/include/javascript/ie_flicker.js" type="text/javascript"> </script>
<![endif]-->
neslo by to upravit, aby to bralo tag s nazvem <script*>
* - cokoliv?
jeste sem si tam pridal 3 radky na vyhozeni <noscript> a jeste bych moh pridat <iframe>...
20.06.2016 (23:45:22)
# IP X
bkralik

:
Mělo by to sežrat i veškeré <script *> - to je právě výhoda toho parseru. Tohle to nesežralo, protože (pravděpodobně) je ten <script> schovanej v tom podmíněném komentáři. Jestli jsem koukal správně, zkus tam dopsat ještě
$els = $doc->getElementsByTagName('comment');
(a samozřejmě navazující odmazání), to by se mělo zbavit i tohohle...
22.06.2016 (02:16:37)
# IP X
RayeR

:
Zkusil sem pridat i s tim forem, ale nic dalsiho to nevyhodilo, soubor je stejny jako predtim.