Autor Zpráva
Dano_V
Profil
Vymyslel som niečo, čo sa pravdepodobne ani nedá vyriešiť, ale aj tak sa opýtam odborníkov skúsenejších. Mám jeden veľmi zložitý javascript, ktorý mi v HTML robí veľmi elegantnú bublinu na kliknutie. Preto som si vymyslel, že do tej bubliny umiestním iframe a do toho pošlem javascriptom formulár. Preto to malo byť elegantné riešenie, lebo na ten formulár z mnoha miest by sa mohlo zavolať s tým, že s javaskritpom by sa mohol input predmetu predprogramovať, aby som vždy vedel, kde návštevník na formulár klikol. Do tejto chvýli sa môjmu úmyslu aj dobre darilo, lebo tak bublina, ako formulár aj predprogramovanie krásne funguje, a dá sa ten obsah formulára aj poslať do pošty.

Problém je iba to, že formulár poslaný do bubliny s javascriptom sa nedá kódovať, a tak do listu mi chodia nezmysli. Skúsil som tam poslať celú html stránku aj s charsetom, skúsil som aj doctype tak päťku, ako aj štvorku, charset všemožným spôsobom, ale nato všetko nereaguje. Do listu mi chodia nezmysly.

Potom som skúsil tú istú zostavu poslať javascriptom do obyčajného iframe priamo na stránke, ale aj tam sa chová tak isto. Tu je ten javascript, s ktorým posielam aj do iframe, kde už formulár sa nedá kódovať. Keď som ten formulár skúsil bez javascriptu priamo na stánke, tak aj kódovanie pošty funguje riadne.

    function tartalom(oldal) {
    parent.oda.document.write("<!DOCTYPE html><html><head><meta charset='windows-1250'><\/head><body>")
    parent.oda.document.write("<form action='index.php' method='post' enctype='multipart/form-data' >")
    parent.oda.document.write("Meno a priezvisko:<input type='text' class='nedotknute' name='meno' size='40'   onfocus='f(this,true)' onblur='f(this,false)'>*<br>")
    parent.oda.document.write("Email:<input type='text' class='nedotknute' name='email' size='40'   onfocus='f(this,true)' onblur='f(this,false)'>*<br>")
    parent.oda.document.write("<input type='text' name='predmet'  value="+oldal+" size='40'><br>")
    parent.oda.document.write("Text správy:<textarea cols='45' rows='8' name='text' id='text' class='nedotknute'  onfocus='f(this,true)' onblur='f(this,false)'> <\/textarea>*<br>")
    parent.oda.document.write("<input type='submit' class='nedotknute'  name='submit' value=' Odoslať '><\/form>")
    parent.oda.document.write("<\/body><\/html>")
            parent.oda.document.close()


        }
Posielanie s tou funkciou sa mi páči, lebo pomocou toho môžem do inputu posielať tie zmeny.

Keby sa to nedalo riešiť, tak mi stačí odpoveď, že sa to nedá. Aj keď s bolestivým srdcom, -)) ale sa toho budem musieť vzdat.

Za vaše prípadné odpovede ďakujem
Davex
Profil
Na doplnění hodnoty do jednoho políčka formuláře není potřeba iframe ani tak složitý JavaScript. Formulář může být v bublině trvale a požadovaná hodnota se dá uložit do document.forms["id_formulare"].elements["predmet"].value

Kromě toho není dobré používat kódování Windows 1250 a všechno by mělo být v UTF-8.
Joker
Profil
Dano_V:
Vymyslel som niečo, čo sa pravdepodobne ani nedá vyriešiť,

To má dvě možná vysvětlení: Buď se pletete, nebo jste jen překomplikoval něco, co má ve skutečnosti jednodušší řešení :-)

Jednak nerozumím tomu, proč to děláte přes <iframe>, když kód do něj stejně vkládáte přes JS. Co je vůbec src toho iframe? Podle mě kdyby se odmazal ten první a poslední write a zbytek strčil normálně dovnitř vhodného kontejneru, bude to taky a přitom jednodušší a kódování nebude potřeba řešit.
Dano_V
Profil
Davex:
Kromě toho není dobré používat kódování Windows 1250 a všechno by mělo být v UTF-8.

Musím to mať v 1250, lebo chcem tam dať kontrolu na diakritiku a tá mi funguje iba s 1250. UFT nemôže prísť do úvahy. A aj odosielací kód mám prispôsobený na 1250-ku. To je môj obľúbený kód, lebo v tom môžem bezproblémovo písať priamo aj na webstránku bez starosti s prekódovaním.

Ten javascript kód nepoznám, ako sa s ním komunikuje, teda čím tam odovzdávať informácie? Napríklad z linku?

Joker:
Podle mě kdyby se odmazal ten první a poslední write a zbytek strčil normálně dovnitř vhodného kontejneru, bude to taky a přitom jednodušší a kódování nebude potřeba řešit.

To som tiež aj urobil, ale snažil som sa bublinu presvedčiť, že to treba nejako aj kódovať kvôli diakritike, preto som to skúšal aj tak, ale bezvýsledne. Fungovalo to rovnako zle. Ale tento kód od Davexu vyzerá nádejne, to vyskúšam, keď budem vedieť, ako tam poslať dáta.
Keeehi
Profil
Dano_V:
chcem tam dať kontrolu na diakritiku a tá mi funguje iba s 1250
Je nějaký problém vytvořit takovou kontolu, která by fungovala s utf8?

v tom môžem bezproblémovo písať priamo aj na webstránku bez starosti s prekódovaním.
To můžeš i s utf8.

Jinak řečeno. Vše co zvládne win 1250 zvládne i utf8. A to co už win 1250 nezvládne, to stál utf8 zvládne. Pokud budeš používat utf8 všude, nebudeš mít problém s žádnými znaky jakékoli světové abecedy. Kódování jako je win1250 jsou už zastaralá a není v dnešní době důvod je používat. Jediné místo, kde dává smysl ho řešit je, pokud máš nějaký starý systém, ke kterému se potřebuješ připojit. V takovém případě to ale neznamená, že bys ve své aplikaci kvůli tomu začala používat nějaké staré kódování ale udeláš si můstek, který bude s tou starou aplikací komunikovat v jejím archaickém kódování, vnitřně si to převede a zbytku aplikace bude data servírovat už v něčem moderním.
Kajman
Profil
Ještě můžete zkusit formuláři zrušit atribut enctype a nastavit atribut accept-charset.
Davex
Profil
Dano_V:
Ten javascript kód nepoznám, ako sa s ním komunikuje, teda čím tam odovzdávať informácie? Napríklad z linku?
Pomocí JavaScriptu se dá manipulovat s celým obsahem stránky, vyčítat a ukládat všelijaké údaje, a mnoho dalšího.

Například adresa aktuální stránky jde do pole formuláře vložit zjednodušeně takto:

<form action="index.php" method="post" id="vzkaz">
Předmět: <input type="text" name="predmet" size="40"><br>
<input type="submit" class="nedotknute" name="submit" value=" Odoslať ">
</form>
<script>
document.forms["vzkaz"].elements["predmet"].value = location.href;
</script>
Dano_V
Profil
Keeehi:
Pokud budeš používat utf8 všude, nebudeš mít problém s žádnými znaky jakékoli světové abecedy.

Vidím, že sa v tomto nezhodneme. Webstránku robím pre domácich, teda Čechov a Slovákov, a že čo tam budú vidieť číňania, alebo japonci, to ma vôbec netrápi. Aj tak tomu nerozumejú. A používať utf iba preto, že je to nová móda, ma vôbec neláka. A domáci kódovanie windows budú mať vždy po ruke, pokiaľ budú používať Windows. A pre tých, čo píšu bez diakritík, (napríklad Angličania) je jedno, aké kódovanie majú deklarované.

Okrem toho ďakujem za tie návrhy kódov, čo ste mi poskytli, zvlášť mi pomohol kód od Davex, keď som to doplnil údajmi a umiestnil som do onclick-u, tak to funguje podľa mojich predstáv. A páči sa mi to, že to údaje dodá formuláru aj vtedy, keď je schovaný, a keď sa bublina s formulárom vyvolá, tak ten údaj už je tam. Ten location.href som ešte nevyskúšal, ale určite sa k tomu dostanem.
Keeehi
Profil
čo tam budú vidieť číňania, alebo japonci, to ma vôbec netrápi. Aj tak tomu nerozumejú.
Oni budou vidět úplně to samé co Češi a Slováci. Z toho je vidět že problematice kódování moc nerozumíte.

A používať utf iba preto, že je to nová móda, ma vôbec neláka.
Já snad něco říkal o módě? Mezi slovy módní a moderní je obrovský rozdíl. Móda je určována zájmem lidí, modernost technologickou vyspělostí / pokrokem. Dost často se stává že moderní věci se stanou i módními, ovšem zaměňovat tyto pojmy nelze. Kdyby utf8 nemělo oproti win 1250 žádnou přidanou hodnotu a byl to jen čistý módní výstřelek, určitě bych vám to neradil. Samozřejmě je možné i dnes používat zastaralé technologie ovšem s tím přichází i spousta práce, kompromisů a utrpení. Je to podobné, jako byste si sám chtěl vypěstovat bavlnu, sklidit, zpracovat, vytvořit nitě, látku a ušít si oblečení. Ta možnost tu stále je avšak málokdo by se v dnešní moderní společnosti chtěl vydat touto cestou.
Joker
Profil
Dano_V:
A používať utf iba preto, že je to nová móda, ma vôbec neláka.

Neřekl bych, že to je módní nebo moderní, je to prostě (de facto) standard.
Normálně se používá UTF-8 a něco jiného jen pokud k tomu je důvod.

Už proto, že UTF-8 je u spousty nástrojů a služeb výchozí nastavení a některé ani nic jiného neumějí, si jeho použitím ušetříte potenciální problémy.
Dano_V
Profil
Vážení páni, nechcem sa s vami hádať, keď budem mať dôvod to používať, tak možno, že v budúcnu sa k tomu prinútim. Ale do terajšie skúsenosti s týmto kódovaním bolo to, že všetko, čo som tam napísal a pustil som to v HTML, tak na celej stránke bolo plno nezmyselných znakov. A keď som otvoril fungčnú stránku písanú v tomto formáte, že by som niečo tam chcel upraviť, neustále som narazil na tie nezmyselné znaky. Ale to už nechajme tak. Mal by som ešte jednu otázku.

Do formuláru chcem dať kontrolu jednak správnosti mailu a kontrolu diakritiky. Oba skripty sa vo formulári aktivujú v onsubmit. Keď ale ich zadám za sebou do zátvorky, tak sa vykoná iba tá funkcia, ktorá je prvá. Druhá už nie. Nepoznáte náhodou nejaký trik, ako donútiť akceptovať aj tú druhú funkciu? Predstavil som si to napríklad tak, ako sa do onclicku zadávajú za sebou aj dve úlohy, a vykonajú sa obe.
Radek9
Profil
Dano_V:
Ale do terajšie skúsenosti s týmto kódovaním bolo to, že všetko, čo som tam napísal a pustil som to v HTML, tak na celej stránke bolo plno nezmyselných znakov. A keď som otvoril fungčnú stránku písanú v tomto formáte, že by som niečo tam chcel upraviť, neustále som narazil na tie nezmyselné znaky.
Jaký používáš editor? Problém bych hledal tam, protože pravděpodobně UTF-8 neumí, nebo na něj musíš manuálně přepnout.

Keď ale ich zadám za sebou do zátvorky, tak sa vykoná iba tá funkcia, ktorá je prvá.
Úplně nevím, co si pod tím představit. Ukaž, jak to děláš.
Dano_V
Profil
Používam "Poznámkový blok", ale to teraz nie je podstatné. Problém mám s onsubmitom. Ďakujem za pchopenie
Keeehi
Profil
Problém mám s onsubmitom.
Číst umíme ale věštit ne. Takže pokud nám neukážeš jakým přesně způsobem jsi ty dvě funkce dal za sebe, tak ti nemůžeme říct, kde jsi udělal chybu.

Používam "Poznámkový blok", ale to teraz nie je podstatné.
Ten sice utf8 umí, avšak není na tvoření takových souborů úplně vhodný. Je totiž potřeba explicitně říci, že chceš soubor uložit v utf8. Na což se dá velmi lehce zapomenout a pak se člověk diví, že se mu to nezobrazuje správně. Ono obecně, poznámkový blok je vhodný na málo co. Doporučil bych ti si nainstalovat nějaký editor se zvýrazňováním syntaxe. Ono se to může zdát jako drobnost ale obrovsky to pomůže při psaní. To že se pak dá lehce nastavit, v jakém kódování se má soubor defaultně uložit je už jen takový bonus.
Mlocik97
Profil
Keeehi:
suhlas,... pouzivat kvalitny editor je zaklad takze si vybrat vscode, atom, sublime text, vim nebo neco jine
Dano_V
Profil
Keeehi:
Číst umíme ale věštit ne.
Prepáč, ja som si myslel, že áno!-))

Skúšal som to takto,
<form id="tak" name="film" onsubmit="return _check_diacritical(document.getElementById('text').value); kontrola(this);" action="index.php" method="post"> ,

ale aj takto

<form id="tak" name="film" onsubmit="return _check_diacritical(document.getElementById('text').value); return kontrola(this);" action="index.php" method="post"> ,

ale výsledok je rovnaký. Ba skúšal som to aj tak, že tá bodkočiara medzi nimi nebola.

Voľakedy som začal používať Home Site, mal veľa možností, ale nevedel ani po Česky, ani po Slovensky, a ja po Anglicky, tak sme sa rozišli. A ako viem, v dnešnej dobe už aj vyšiel z môdy.
Kajman
Profil
Po příkazu return se další kód nevykoná.

Možná hledáte něco jako
return (_check_diacritical(document.getElementById('text').value) && kontrola(this));
Keeehi
Profil
Dano_V:
Voľakedy som začal používať Home Site, mal veľa možností, ale nevedel ani po Česky, ani po Slovensky, a ja po Anglicky, tak sme sa rozišli.
V tom případě bych zkusil PSPad. Je to editor od českého tvůrce, pro začátečníka naprosto dostatečný.
Dano_V
Profil
Ďakujem Vám obom, respektive všetkým za dobré rady, ten return určite vyskúšam, ale asi to bude ono, čo potrebujem.

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:

Prosím používejte diakritiku a interpunkci.

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

0