RegExp, uvozovky/apostrofy – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

RegExp, uvozovky/apostrofy – JavaScript, AJAX, jQuery – Fórum – Programujte.comRegExp, uvozovky/apostrofy – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Petroff0
Věrný člen
20. 1. 2008   #1
-
0
-

1.JS=reklamní lišta vygeneruje HTML s inline styly --> tohle je jedna položka seznamu

<LI style="DISPLAY: inline; BACKGROUND: url(http://img.ic.cz/img/9.gif) no-repeat 50% 50%; COLOR: blue! important; LIST-STYLE-TYPE: none! important"><A class=ic_lista onmousedown="javascript:void(myImage = new Image());void(myImage.src = 'http://c.ic.cz/klik.php?url_id=73&l=3&p=4');" title="Hosting za super ceny." style="FONT-SIZE: 12px! important; COLOR: black" onclick="javascript:urchinTracker('/clicks/click');" href="http://c.ic.cz/redir.php?url_id=73&l=3" target=_blank>Webhosting od 19 Kč</A></LI>

2.můj skript má některé styly změnit/přidat - a inline styly important se nedají přepsat ani ve <style>, ani JS pomocí DOM (NELZE: element.style.padding="0 0 0 10px important")
Takže jsem použil innerHTML a string.replace s regulárními výrazy k přidání deklarací na konec:
(a funguje to v IE7 a FF)
var uH = lists[i].innerHTML;

uH = uH.replace(/(<li\s+style="[^"]+)("[^>]*>)/gi,
'$1; background-position: 3px 50% !important ;$2'
);
lists[i].innerHTML = uH;

Problém je v tom, že lištička vygeneruje v každém prohlížeči mírně odlišný kód, a v Opeře to nefunguje díky zápisu:
<LI STYLE='word-spacing: -1px; display: inline; list-style-type: none; background-attachment: scroll; background-repeat: no-repeat; background-position: 0px 50%; background-color: transparent; background-image: url("http://img.ic.cz/img/4.gif"); padding-top: 0; padding-right: 6px; padding-bottom: 0; padding-left: 11px'><A target="_blank" onmousedown="javascript:void(myImage = new Image());void(myImage.src = 'http://c.ic.cz/klik.php?url_id=73&l=3&p=4');" STYLE='color: #ffffff; font-size: 12px' class="ic_lista" title="Hosting za super ceny." onclick="javascript:urchinTracker('/clicks/click');" href="http://c.ic.cz/redir.php?url_id=73&l=3">Webhosting od 19 Kč</A></LI>
Nechci použít detekci Opery(nespolehlivé) a větvení do 2 replace procedur
Jestli umíte sestavit potřebný (dualní) reg find string moc mi pomůžete - díky.

Nahlásit jako SPAM
IP: 89.102.96.–
20. 1. 2008   #2
-
0
-

A co takhle manualne nastavit ty styly pres JS pomoci DOM, ne pomoci nharazovani kodu?

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Petroff0
Věrný člen
20. 1. 2008   #3
-
0
-

To CommanderZ : Přečti si to pozorně ..... ! IMPORTANT

Nahlásit jako SPAM
IP: 89.102.96.–
20. 1. 2008   #4
-
0
-

A co, afaik JS nejaky important moc nevzrusuje ;)

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Prog.0
Věrný člen
20. 1. 2008   #5
-
0
-

To Petroff :
Veľmi som to asi nepochopil, veď cez dom to ísť musí, to je vlastne už najnižšia úroveň... symbol !important len hovorí o zvýšenej dôležitosti konkrétneho zápisu v css, a hodnota s najvyššou dôležitosťou sa nakoniec zapíše do DOM. Čiže keď z JS pristupuješ priamo na dom, tak si myslím, že musíš prepísať všetko. Priznak "!important" by sa v odovzdávanej hodnote nemal objavovať, ten do nej totiž nepatrí ...myslím to tak, že:

element.style.padding="0 0 0 10px !important" je nesprávny zápis, pretože teraz odovzdávam hodnotu, nie nejaký css predpis. a !important nie je súčasťou hodnoty. (výraz by mal vyhodiť nejaký notice css parsera)
Btw, v tom zápise s paddingom ti chýbal pred slovom important výkričník...

!important by sa ešte mohol vyskytnúť v cssText, čo sa mi marí že je hodnota uvedená v atribúte style. Pozri cez DOM inspector.

Skús toto:

<span id="a" style="font-weight:bold !important">TOTO JE TUCNE</span>

<script>
// document.getElementById('a').style.cssText = 'font-weight: normal'; // funguje
// document.getElementById('a').style.cssText = 'font-weight: normal !important'; // funguje
// document.getElementById('a').style.fontWeight = ''; // funguje
// document.getElementById('a').style.fontWeight = 'normal'; // nefunguje ( ? )
</script>

Ak som nepochopil a píšem od veci, tak sorry ;-)

Nahlásit jako SPAM
IP: 213.160.186.–
Prog.
Petroff0
Věrný člen
21. 1. 2008   #6
-
0
-

Proč se nějakým important vůbec zabývám:
<div id="reklama"> <script type="text/javascript" src="http://img.ic.cz/3/lista.blue.utf.js"></script> </div>
Tahle lišta s reklamou svým grafickým projevem (barva pozadí apod) kazí vzhled. Pár změn ve stylech a je to OK.
Vlastnosti kt. nemají použitý inline important jsem dal do stylů s important a zbývající 2 musím uložit jako inline style s prioritou important.
To Prog. : od věci to není - určitě bych rád věděl, jak (jestli) to jde nastavovat přes DOM. Přece ta důležitost prvku někde musí být uložená ....
VYŘEŠENO
=> zjistil jsem že jedním RegExp předpisem to udělat nejde, protože zpětné reference nelze negovat:
"[^"]+ .... lze
(['"]) [^\1]+ ....nelze
Takže nadvakrát:

uH = uH.replace(/(<li\s+style="[^"]+)("[^>]*>)/gi,'$1;padding: 0px 3px 0 14px !important; background-position: 3px 50% !important ;$2');

uH = uH.replace(/(<li\s+style='[^']+)('[^>]*>)/gi,'$1;padding: 0px 3px 0 14px !important; background-position: 3px 50% !important ;$2');

Nahlásit jako SPAM
IP: 89.102.96.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

Podobná vlákna

Preg-replace apostrofy — založil tribalcz

Uvozovky v textu — založil infomf

Uvozovky ve zpracovávaném textu — založil Marek Štafl

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý