PDA

Zobacz pełną wersję : Jak wyłączyć tryb quirks?



jahoozKA
13-01-2010, 15:25
Niestety IE<8 nie mają opcji wyłączania trybu dziwności a on psuje mi wygląd strony link (http://www.urzad.przywidz.pl/). Wszystko wskazuje na to, że chodzi o ten tryb, który zostawia pusty blok obok menu (komponent swmenufree). Strona w FF i przy wyłączonym widoku zgodności w IE8 wyświetlana jest prawidłowo. Gdy włączę widok zgodności w IE8 - pusty blok ! Tak samo strona wyświetla się w IE<8. Proszę o radę kogoś kto wie jak temu zaradzić czyli sprawić aby przeglądarki IE<8 nie wchodziły w ten tryb i prawidłowo wyświetlały.
Poczytałem forum i znalazłem (http://wiki.joomla.pl/Tryb_dziwno%C5%9Bci_i_jak_go_unika%C4%87)możliwe rozwiązania lecz to nie pomaga a mianowicie usunąłem część wpisu w pliku index.php w templacie której używam:
chodzi o blok deklaracji DOCTYPE

<?php

/**

* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.

* @license GNU/GPL, see LICENSE.php

* Joomla! is free software. This version may have been modified pursuant

* to the GNU General Public License, and as distributed it includes or

* is derivative of works licensed under the GNU General Public License or

* other free or open source software licenses.

* See COPYRIGHT.php for copyright notices and details.

*/



// no direct access

defined( '_JEXEC' ) or die( 'Restricted access' );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" > - usunąłem

<head>
...
Czy ktoś spotkał się z podobnym problemem ? Proszę o pomoc

Jola
13-01-2010, 15:45
Witam,
kod , który zacytowałeś nie wygląda mi na kod pliku index.php Twojego szablonu, chociaż mogę się mylić.
A powodem przechodzenia przeglądarki w "kłopotliwy" tryb jest ta oto niedokończona deklaracja:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
Brak zamknięcia znacznika.

moje
13-01-2010, 16:05
Usunąłeś linijkę, która nie ma nic wspólnego z trybem dziwności, a odpowiada za wyświetlanie strony oraz informacji o wersji językowej zawartości (czyli o tym, że tekst na stronie jest w języku polskim).

Poczytaj o DOCTYPE (na dole strony) http://kurs.browsehappy.pl/Definicja/QuirksMode.

Polecam tez poczytać : http://code.google.com/p/ie7-js/.

jahoozKA
13-01-2010, 16:13
Dziękuje Ci za szybką podpowiedź. :)
Dopisałem brakujący znacznik ale wciąż IE7 wyświetla pusty blok obok menu. Kod, który podałem jest to wycinek pliku index.php dlatego mogło Ciebie zmylić. Wyrzuciłem jeszcze fragment z adresem.
początek kodu:

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">



<head>
...czyli mam deklarację XHTML 1.0 Transitional — brak Prologu XML i adresu URL - powinno wyświetlać w standardzie we wszystkich przeglądarkach

Czy masz inne pomysły? Są jeszcze fragmenty kodu, które można dodać do DOCTYPE jak np.:

To prevent IE from entering Quirks Mode, replace the and statements at the top of the template's index file with:

$iso = split( '=', _ISO );
$Browser_Type = strtok($HTTP_USER_AGENT, "/");
$doc_type = "";
if (ereg( "MSIE", $HTTP_USER_AGENT))
{
echo $doc_type;
echo '';
$browtype = "You are using IE";
}
else
{
echo '';
echo $doc_type;
$browtype = "You are not using IE";
}
?>ze strony link (http://forum.joomla.org/viewtopic.php?t=7537) - też próbowałem i :(

zwiastun
13-01-2010, 16:19
@moje podał Ci adres do kursu. Na www.pomoc.joomla.pl te kwestie również są omówione. DTD w Twoim dokumencie nie posiada części adresowej. Nie umieściłeś również niepotrzebnie usuniętego znacznika głównej części dokumentu (html)!

jahoozKA
13-01-2010, 17:10
Część adresowa z DTD została usunięta celowo zgodnie z zaleceniami z kursu , który znalazłem wcześniej http://kurs.browsehappy.pl/Definicja/QuirksMode (potem link przytoczył @moje). Jeśli dobrze zrozumiałem z kursu:
XHTML 1.0 Transitional — brak Prologu XML i adresu URL wprowadza przeglądarki w tryb -standard-, dlatego usunąłem części adresowe i prolog. Jest jeszcze jedna wyraźniejsza tabela na tej samej stronie, która podpowiada, że

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> (http://hsivonen.iki.fi/doctype/test-quirks.php?doctype=%3C%21DOCTYPE+html+PUBLIC+%22-%2F%2FW3C%2F%2FDTD+XHTML+1.0+Transitional%2F%2FEN% 22+%22http%3A%2F%2Fwww.w3.org%2FTR%2Fxhtml1%2FDTD% 2Fxhtml1-transitional.dtd%22%3E)czyli deklaracja z adresem wprowadza prawie wszystkie (popularne) przeglądarki w tryb standardowy - na tym mi zależy i tak też mam zadeklarowane w pliku index.php templaty rhuk_milkyway:

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >Lecz wciąż IE7 nie pokazuje strony prawidłowo.

Nie umieściłeś również niepotrzebnie usuniętego znacznika głównej części dokumentu (html)!Nie usuwałem znaczników głównej części dokumentu. Kod, który podałem jest wycinkiem, w którym jest problematyczny fragment kodu.

zwiastun
13-01-2010, 17:21
Sama deklaracja nie wprowadza w tryb standardowy. Są również inne powody przejścia w tryb dziwactw. Zostało to opisane, ale czytaj uważnie, bo to - jak z adresem. Możliwe, iż gdzieś doczytałeś, że adres nie jest konieczny, ale w znanych mi przykładach i opisach taka uwaga to raczej wyjątek.