Autor Zpráva
Str4wberry
Profil
Ahoj, dobrý den,

snažím se v editoru s contenteditable vytvořit část, do které nepůjde čmárat, zkusil jsem následující:

1) Přidat elementu, který nemá být upravitelný, contenteditable=false. Nefungovalo napříč prohlížeči.
2) Vložit needitovatelný text jako alt neexistujícího obrázku. Nefungovalo uspokojivě napříč prohlížeči.

Nyní jsem ve stavu před:
3) Rozsekat editor na malé editůrky podle needitovatelných oblastí.

Jak byste to řešili vy? Pominu-li řešení „vyhnutím se“.
joe
Profil
Tak třetí možnosti bych se zcela určitě vyhnul. Zkoušel jsem to a zdá se, že mi to funguje ve všech majoritních prohlížečích celkem normálně, nevím kde máš problém, pokud nemyslíš nevymazání needitovatelného prvku při stisku backspace ve Firefoxu, což by měl řešit tenhle kód, ale nefunguje mi. Možná by stačilo ho nějak upravit (nezkoumal jsem ho).
Chamurappi
Profil
Reaguji na Str4wberryho:
část, do které nepůjde čmárat
Má tam jen překážet částem, do kterých půjde čmárat, nebo bude mít i nějaký další význam?

Dělal jsem nedávno WYSIWYG editor, do něhož měl mít uživatel možnost vkládat různé boxíky podle šablonek. Nebylo žádoucí, aby je mohl měnit přímo ve WYSIWYGu, protože by naboural jejich pevně danou strukturu (na upravitelné texty měl připravené dialogové okno), ale potřeboval jsem zajistit, aby celý boxík mohl snadno přesouvat a mazat, případně i kopírovat/vkládat/vyjímat přes standardní systémovou schránku. Řešil jsem to tak, že jsem na místo boxíku dal průhledný <img>, pod celý editor jsem dal další vrstvu se skutečnou HTML podobou boxíku a při změnách jsem synchronizoval absolutní pozici boxíku s přirozenou pozicí <img> a rozměry <img> s přirozenými rozměry boxíku. Ty <img> pak šly přetahovat standardním drag&drop (v prohlížečích podporujících drag&drop), mazat atd. — takže to jsem už dál nemusel řešit individuálně.

Než jsem vymyslel tenhle postup, také jsem prošel tři zmíněné varianty.
Vím, že jsem chvíli přemýšlel, že bych dal těm obrázkům visibility: hidden, ale že mi to nechtělo fungovat v Exploreru. O pár měsíců později jsem zjistil, že to jde přepnout nedokumentovaným editačním příkazem RespectVisibilityInDesign, ale to už jsem to nepotřeboval.
Str4wberry
Profil
Díky, zdá se, že funguje pěkně (předpokládám, že zamezit možnosti měnit velikost toho obrázku nebude problém).
Chamurappi
Profil
Reaguji na Str4wberryho:
zamezit možnosti měnit velikost toho obrázku
V Exploreru je událost onresizestart, která se nechá stopnout return false, tu je nutné nastavit každému obrázku individuálně.
V Mozille je globální přepínač pro celý dokument — document.execCommand("enableObjectResizing", false, false).

Obrázky mají ještě tu nepříjemnou vlastnost, že je člověk může přetáhnout (či jinak přesunout) dovnitř řádkových elementů či odstavců, což je pro (zpravidla blokový) boxík docela nepřirozená pozice. Ve svém editoru při synchronizaci rozměrů a pozic zároveň provádím kontrolu, jestli nejsou <img> uvnitř něčeho, v čem nemají být, a případně je vyšoupávám ven.

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