Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: UWAGA! Błąd firefoxa!
Forum PHP.pl > Inne > Hydepark
Fixer
Przez przypadek zauważyłem, że jak do tabeli wstawi się: "<img name="" src="" width="1" height="1" alt="">" to skrypt PHP w Firefox 3.0.8 przeładowuje się 2 razy!
Też tak macie u siebie?

Żeby to sprawdzić przykładzik podaję...

  1. <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  2. <tr>
  3. <td height="20" colspan="3"><img name="" src="" width="1" height="1" alt=""></td>
  4. </tr>


Żeby udowodnić że strona się 2 razy przaładowuje napiszmy prosty kod php, który łączy się z mysql i aktualizuje wartość liczbową zwiększając ją o jeden.
  1. <?php
  2.  
  3. mysql_connect('localhost', 'dbuser', 'dbpass');
  4.  
  5. mysql_query("UPDATE `baza`.`tabela`
  6.             SET `wyswietlen` = wyswietlen + 1
  7.             WHERE `tabela`.`id` = '1'
  8.             LIMIT 1;");
  9.  
  10. $wynik = mysql_query("SELECT wyswietlen
  11.                      FROM tabela
  12.                      WHERE `tabela`.`id` = '1'
  13.                      LIMIT 1");
  14.  
  15. if (mysql_num_rows($wynik) > 0) {
  16.  while ($wiersz = mysql_fetch_array($wynik)) {
  17.    echo ($wiersz['wyswietlen']);
  18.  }
  19. } else {
  20.  echo ("baza pusta...");
  21. }
  22.  
  23.  
  24. ?>


Przy każdym odświeżeniu strony licznik wzrasta co 2 :/
Jak zaś usuniemy IMG to wszystko jest ok

Dopiero zamiana na:
  1. <img src="images/blanc.gif" alt="" width="1" height="1" border="0" />

załatwia sprawę...

PS. Gdzie można zgłosić taki wykryty BUG?
l0ud
To akurat normalne i dzieje się z takiego samego powodu, co prowadzenie linków z href="" do dokładnie tej samej strony.
wookieb
Cytat(Fixer @ 12.04.2009, 01:53:25 ) *
PS. Gdzie można zgłosić taki wykryty BUG?
To nie jest żaden bug tylko błąd osoby tworzącej strony wiec uspokoj sie z info ze znalazles mega buga bo tak naprawdę mega bug jest u ciebie.
Fixer
Cytat(l0ud @ 12.04.2009, 08:01:05 ) *
To akurat normalne i dzieje się z takiego samego powodu, co prowadzenie linków z href="" do dokładnie tej samej strony.
ty... weź ty przeczytaj jeszcze raz ten topic, tym razem ze zrozumieniem tongue.gif

Cytat(wookieb @ 12.04.2009, 08:58:01 ) *
To nie jest żaden bug tylko błąd osoby tworzącej strony wiec uspokoj sie z info ze znalazles mega buga bo tak naprawdę mega bug jest u ciebie.
strona nie ma prawa się sama przeładowywać tym bardziej gdy programista sobie tego nie życzy! a umieszczenie znacznika <img> ma wyświetlać obrazek a nie przeładowywać stronę! Gdybym zaś chciał przeładować użył bym refresh/location:/a href/js!
tą składnię img stosuje Adobe Dreamwever CS3 i nazywa się "Image Placeholder"
ta sama składnia wyświetlona w IE działa i zachowuje się poprawnie!

Jeśli FF nie potrafi interpretować poprawnie składni XHTML/HTML to jest to ewidentny BUG! myli "<img name..." z "<a name...
Zaś walidator Tidy w FF wskazuje w tym miejscu ostrzeżenie ale nie błąd zaś SGML milczy i nie widzi w niczym błędu, dalej zatem podtrzymujesz że to błąd programisty!

Wyobraźmy sobie że stosujesz Image Placeholder w połączeniu z funkcją mail lub wykonujesz sporo insert'ów/select'ów na bazie danych... tragedia!
bartg
Zastanów się. FF wchodzi na strone (licznik rośnie o 1), a potem próbuje pobrać obrazek, link do obrazka jest taki sam jak do strony (licznik rosnie znów o 1).

Suma? 2!
Dlaczego? Bo w znaczniku img atrybut src podajesz jako wartość pustą. FF interpretuje to jako link do strony na jakiej akurat jesteś smile.gif. Strona się nie odświeża, zostaje wywołana dwa razy
kwiateusz
ale imo to nielogiczne bo cala strona obrazen nie moze byc inaczej nie dałoby sie htmla zamieścić... w a moze być bo odnosnik moze byc do dowolnego elementu, ale w img
l0ud
Cytat
ty... weź ty przeczytaj jeszcze raz ten topic, tym razem ze zrozumieniem

Proponuję zrobić to samo z moim postem tongue.gif Kiedy nie podasz adresu do jakiegoś elementu FF w tej wersji wykorzysta adres aktualnie otwartego dokumentu. Swoją drogą ktoś już raportował tego 'buga':
https://bugzilla.mozilla.org/show_bug.cgi?id=464358

Nie wiem w jaki sposób strona działa Ci pod IE normalnie, bo ja testowałem to w wersjach 6,7,8 i za każdym razem skrypt był ładowany podwójnie - jako dokument i obrazek. Jedynie pod Operą i najnowszą betą firefoxa 'problem' nie występuje.

Po prostu zrezygnuj z tej głupiej metody i zacznij obsadzać obrazki normalnie tongue.gif
icetique
Jest to jak najbardziej normalne działanie.

Atrybut src="" odwołuje się relatywnie do bazowego URLa, który w naszym przypadku równa się stronie, którą wywołujemy.

Cytat
12.4.1 Resolving relative URIs User agents must calculate the base URI for resolving relative URIs according to [RFC1808], section 3. The following describes how [RFC1808] applies specifically to HTML.

User agents must calculate the base URI according to the following precedences (highest priority to lowest):

  1. The base URI is set by the BASE element.
  2. The base URI is given by meta data discovered during a protocol interaction, such as an HTTP header (see [RFC2616]).
  3. By default, the base URI is that of the current document. Not all HTML documents have a base URI (e.g., a valid HTML document may appear in an email and may not be designated by a URI). Such HTML documents are considered erroneous if they contain relative URIs and rely on a default base URI.
Additionally, the OBJECT and APPLET elements define attributes that take precedence over the value set by the BASE element. Please consult the definitions of these elements for more information about URI issues specific to them.
kwiateusz
bell mozna taki adres ale zauwaz ze ejst parametr a my rozważamy pusty ciag
mls
Od siebie, jako użytkownika maka, dodam tylko, że Safari standardowo nie akceptowało (nie sprawdzałem, czy wciąż nie akceptuje) lokalizacji href="". Taki adres np. na stronie z obecnym wątkiem (http://forum.php.pl/UWAGA_Blad_firefoxa_t118633.html) prowadziłby na stronę główną (http://forum.php.pl)
Fixer
mimo (drobnej) uszczypliwości (mojej i kolegów) dzięki wszystkim za zainteresowanie omawianym problemem, fajnie że ktoś to wcześniej zauważył i zaraportował to już...
swoją drogą znalazłem porady dotyczące FF i tego konkretnego przypadku, które mówią żeby wejść w about:config modyfikując tym samym 2 zmienne (widać zespół ff boryka się z tym problemem próbując na szybko zaradzić tymczasowo patowej sytuacji...)

Podawanie czegoś bez parametru (parametr pusty) lub podanie ścieżki do pliku, który fizycznie nie istnieje powinien być przez interpreter browsera należycie obsłużony, ale ff świadomie widać rezygnuje z tej funkcjonalności bo ważniejsze jest dla nich to by ich przeglądarka była szybsza od konkurencji a co za tym idzie mniej dokładna (że o bugach w chrome już nie wspomnę...). Problem tzw. "złotego środka"? tongue.gif

Tym sposobem darmowa aplikacja o otwartym kodzie (opensource) po zaraportowaniu błędu, który szybko powinien zostać poprawiony, tylko gdyby tak było to po roku mielibyśmy do czynienia z załatanym kombajnem a nie z lekką alternatywą stanowiąca konkurencję dla IE :]
l0ud
Nie wiem czy zauważyłeś, ale ten bug od 5 miesięcy nie został nawet potwierdzony tongue.gif Wniosek jest taki, że będzie najprawdopodobniej występował w całej linii 3.0.x. Poza tym wszystkie IE zachowują się tak samo.
Fixer
Przecież napisałem, że w IE działa poprawnie...
mam IE 7.0.5
l0ud
Testowałem podobny kod pod IE6 i IE8 zarówno z włączonym trybem kompatybilności jak i bez. Za każdym razem skrypt wykonywał się 2 razy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.