Autor Zpráva
pavelrejha
Profil
Zdravím,
potřeboval bych poradit, jak udělat JS, který by dokázal opsat název souboru z url adresy bez přípony a pak ho vypsat, tedy pokud to lze?

Nalezl jsem pěkný článek s podobným js zde: Přečtení proměnných z adresy javascriptem

Ale bohužel se mi nedaří ho poupravit do mého záměru, může mi prosím někdo pomoci? Děkuji.
Keeehi
Profil
Můžeme, ovšem nevíme s čím konkrétně máš problém.
pavelrejha
Profil
Když vezmu výše zmíněný JS ze článku, tak ten opisuje to co je po otazníku, ale já nevím jak donutit ho opsat název souboru...
juriad_
Profil *
https://stackoverflow.com/a/40725409
Potřebuješ pracovat s pathname, to rozdělit podle lomítek a vzít poslední.
Keeehi
Profil
Součásti objektu location máš popsané na Objekt window » Objekt window.location což je stránka na kterou ae můžeš dostat i tím odrazem v ukázce.
pavelrejha
Profil
Zatím se mi to vůbec nedaří... Aspoň, že vím že to udělat půjde :-)


Nějak jsem se zasekl nad tímto, lomítko které je v závorce mám přidat do řádku ve kterém už závorka je, jak?

.pathname.split("/")

<script type="text/javascript">
document.write(document.location);
</script>
pavelrejha
Profil
Nevím jestli je to takto ok, nebo je tam něco na víc, ale nějak jsem nikde nenašel jak odstranit příponu, je k tomu nějaká zkratka? Číselně mi to nedává moc smysl, když nevím kolik znaku přípona bude mít....

document.write((window.location.pathname).replace(/\/$/, "").substr((window.location.pathname.replace(/\/$/, "")).lastIndexOf('/') + 1));
Keeehi
Profil
když nevím kolik znaku přípona bude mít
To ano, ale přece si můžeš zjistit, kde se nachází ta tečka a z toho si dopočítat potřebný počet znaků.

var url = window.location.pathname.replace(/\/+$/, "");

document.write(url.substr(url.lastIndexOf('/') + 1, url.lastIndexOf('.') - 1));
pavelrejha
Profil
Super, děkuji! Lze tento script použít třeba k tomuto účelu:

Js dám do externího souboru test.js

<img src="<script type="text/javascript" src="test.js"></script>.jpg">

Omlouvám se, že je to takto prasecky napsáno, ale vůbec netuším jak se toto dělá...
Keeehi
Profil
pavelrejha:
Myslím že nejde. Jde ale to udělat obráceně. Ten HTML kód přidat do JS.

var url = window.location.pathname.replace(/\/+$/, "");
 
document.write('<img src="' + url.substr(url.lastIndexOf('/') + 1, url.lastIndexOf('.') - 1) + '.jpg">');

Ale máš celkem pravdu, vypadá to, že to je prasárna. Nejspíše bude existovat elegantnější řešení, ovšem když nevíme o co ti jde, těžko ti můžeme poradit co bude vhodné. Zatím mi má věštecká koule říká, že se snažíš o dynamické sestavování stránky. Na což by se asi víc hodil nějaký servrový jazyk (třeba PHP) než javascript.
pavelrejha
Profil
Toto je přesně co potřebuji, jen dotaz lze tam zakomponovat i párové HTML? <a href="">#</a>, <script type="text/javascript"></script>???

Úplně mi není jasné, jak obejít ty lomítka co mají párové HTML.

Ano, pokouším se udělat stránky vše za pomocí JS, poradím si jen s HTML... Chápu že PHP by bylo efektivnější, ale to by v mém podání byl ještě větší průser než-li JS...
Keeehi
Profil
Úplně mi není jasné, jak obejít ty lomítka co mají párové HTML.
Lomítka v řetězci vůbec ničemu nevadí.

document.write('<a href="' + url.substr(url.lastIndexOf('/') + 1, url.lastIndexOf('.') - 1) + '.html">Odkaz</a>');

Zvýrazňovač kódu to tady na stránce ne úplně moc zvládá, takže se může zdát, že tam je chyba ale je to v pořádku.

Chápu že PHP by bylo efektivnější, ale to by v mém podání byl ještě větší průser než-li JS.
Tak jestli si máš vybrat, jestli se učit PHP nebo JS tak by bylo záhodno nejspíše zvolit právě PHP. S javascriptem budeš mít nejspíše problém, že tvé stránky nebudou vyhledatelné vyhledávači. Jediný, kdo alespoň trochu slušně pracuje s javascriptem je google. Ostatní vyheldavače s javascriptem zatím jen experimentují, nebo ho ignorují. Věci které vytvoříš javascriptem (obrázky, texty, odkazy, ...) budou pro taková vyhledavače neviditelné. Jelikož výstupem z PHP je obyčejný textový html kód, vyhledavače nemají problém takovou stránku zaindexovat.
pavelrejha
Profil
Omlouvám se, <a href="">#</a> funguje, já to testoval s <script type="text/javascript" src=""></script> ten to nepobere, tak jsem myslel že mám problém s těmi lomítky, ale jak je vidět script ve scriptu nefunguje. Vypíše to jen '); Ale ještě zkouším...

Ano, máš pravdu, PHP je lepší, to ohledně vyhledávačů jsem nevěděl.
pavelrejha
Profil
Tak jediné co tam nefunguje je: <script type="text/javascript" src=""></script>, jen se mi nepodařilo zjistit proč.
Keeehi
Profil
pavelrejha:
Tak to asi proto, že tam bude nějaká chyba. Přidávat dynamicky script scriptem samozřejmě možné je. Dělá se to typicky ale trochu jinak než přes write.

var firstScript = document.scripts[0];
var script = document.createElement('script');
script.src = 'url adresa';
firstScript.parentNode.insertBefore(script, firstScript);
pavelrejha
Profil
Nechtěl jsem otravovat hned, proto jsem to testoval, ale nějak se mi ty dva scripty nepodařilo dát dohromady.

<script type="text/javascript">
var url = window.location.pathname.replace(/\/+$/, "");
var firstScript = document.scripts[0];
var script = document.createElement('script');
script.src = ('url.substr(url.lastIndexOf('/') + 1, url.lastIndexOf('.') - 1) + .js');
firstScript.parentNode.insertBefore(script, firstScript); 
</script>
Keeehi
Profil
script.src = url.substr(url.lastIndexOf('/') + 1, url.lastIndexOf('.') - 1) + '.js';
pavelrejha
Profil
Aha, sakra! Na scriptech je nejhorší to, že 1 chyba (v mém podání milion) a nic nefunguje. Ale ikdyž jsem to opravil stále to nic nedělá, testuji to takto:

test.html
<html>
<head>
<title>#</title>
</head>
<body>
<script type="text/javascript">
var url = window.location.pathname.replace(/\/+$/, "");
var firstScript = document.scripts[0];
var script = document.createElement('script');
script.src = url.substr(url.lastIndexOf('/') + 1, url.lastIndexOf('.') - 1) + '.js';
firstScript.parentNode.insertBefore(script, firstScript); 
</script>
</body>
</html>
test.js
var datum = new Date()
var rok = datum.getFullYear()
document.write("" + rok + "")

P.S. Script s datumem je kravina, ale nic jiného mě pro test nenapadlo.
Keeehi
Profil
Takhle to funguje, že?
...
</script>
<div id="result"></div>
</body>
</html>

var datum = new Date()
var rok = datum.getFullYear()
document.getElementById("result").innerHTML = rok;
pavelrejha
Profil
Perfekt! Děkuji! Pokud se tím neživíš, měl by si začít...
Keeehi
Profil
pavelrejha:
Můžeš tedy s úspěchem zapomenout, že nějaké document.write() existuje. Možná že existuje nějaký případ kde je jeho použití vhodné, já však na něj během posledních let nenarazil.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0