Título: javascript, reducir o "llamar" funcion
Publicado por: Neibar en 8 Mayo 2012, 19:33 pm
tengo este "tocho" para saber qué navegador se usa y sistema operativo, para usar un tipo de estilo u otro, entonces... Por lo que he mirado, se pueden hacer meta's cmo si de un estilo se tratara. Alguno me podría orientar un poco sobre esto? <script language="javascript"> //detección del navegador var BrowserDetect = { init: function () { this.browser = this.searchString(this.dataBrowser) || "unknown"; this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "unknown"; this.OS = this.searchString(this.dataOS) || "an unknown OS"; }, searchString: function (data) { for (var i=0;i<data.length;i++) { var dataString = data[i].string; var dataProp = data[i].prop; this.versionSearchString = data[i].versionSearch || data[i].identity; if (dataString) { if (dataString.indexOf(data[i].subString) != -1) return data[i].identity; } else if (dataProp) return data[i].identity; } }, searchVersion: function (dataString) { var index = dataString.indexOf(this.versionSearchString); if (index == -1) return; return parseFloat(dataString.substring(index+this.versionSearchString.length+1)); }, dataBrowser: [ { string: navigator.vendor, subString: "Apple", identity: "Safari" }, { prop: window.opera, identity: "Opera" }, { string: navigator.vendor, subString: "iCab", identity: "iCab" }, { string: navigator.vendor, subString: "KDE", identity: "Konqueror" }, { string: navigator.userAgent, subString: "Firefox", identity: "Firefox" }, { string: navigator.vendor, subString: "Camino", identity: "Camino" }, { // for newer Netscapes (6+) string: navigator.userAgent, subString: "Netscape", identity: "Netscape" }, { string: navigator.userAgent, subString: "MSIE", identity: "Explorer", versionSearch: "MSIE" }, { //esta parte reconoce el chrome string: navigator.userAgent, subString: "Gecko", identity: "Chrome", //Mozilla versionSearch: "rv" }, { // for older Netscapes (4-) string: navigator.userAgent, subString: "Mozilla", identity: "Netscape", versionSearch: "Mozilla" } ], dataOS : [ { string: navigator.platform, subString: "Win", identity: "Windows" }, { string: navigator.platform, subString: "Mac", identity: "Mac" }, { string: navigator.platform, subString: "Linux", identity: "Linux" } ] }; BrowserDetect.init(); //estilos de cada navegador if (BrowserDetect.browser == "Firefox") { document.write("<LINK REL='stylesheet' HREF='../css/content.css' TYPE='text/css'>"); } else { if (BrowserDetect.browser == "Explorer"){ if (BrowserDetect.version>=7){ document.write("<LINK REL='stylesheet' HREF='../css/ie7.css' TYPE='text/css'>"); } } else { if (BrowserDetect.browser == "Opera"){ if (BrowserDetect.version<9){ document.write("<LINK REL='stylesheet' HREF='../css/opera.css' TYPE='text/css'>"); }else{ document.write("<LINK REL='stylesheet' HREF='../css/opera9.css' TYPE='text/css'>"); } } else { if (BrowserDetect.browser == "Safari"){ document.write("<LINK REL='stylesheet' HREF='../css/safari.css' TYPE='text/css'>"); }else{ document.write("<LINK REL='stylesheet' HREF='../css/chrome.css' TYPE='text/css'>"); } } } } </script>
Título: Re: javascript, reducir o "llamar" funcion
Publicado por: WHK en 8 Mayo 2012, 20:36 pm
Y si falla un script o alguien los tiene deshabilitados no habrá estilo en tu sitio web? Usa esto: <?php /* Detecta el motor del agente de usuario */ preg_match_all( '#(?<browser>' . join('|', array('msie', 'firefox', 'safari', 'webkit', 'opera', 'netscape', 'konqueror', 'gecko')).')[/ ]+(?<version>[0-9]+(?:\.[0-9]+)?)#', strtolower($_SERVER['HTTP_USER_AGENT']), $gear_browser); if($gear_browser['browser'][0]){ array('msie','firefox','konqueror','opera','safari'), array('trident','gecko','khtml','presto','webkit'), $gear_browser); } echo $gear_browser;
Con eso sabrás si es webkit, gecko, trident,. etc, lo necesario para hacer hojas de estilo. No vas a hacer una hoja de estilo para chrome y otra para safari, ambos usan el mismo motor para redenderizar los estilos.
Título: Re: javascript, reducir o "llamar" funcion
Publicado por: Neibar en 8 Mayo 2012, 21:30 pm
muchas gracias! sale este error :S Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\projecte\pag\content.php on line 29 preg_match_all( '#(?<browser>' . join('|', array('msie', 'firefox', 'safari', 'webkit', 'opera', 'netscape', 'konqueror', 'gecko')).')[/ ]+(?<version>[0-9]+(?:\.[0-9]+)?)#', strtolower($_SERVER['HTTP_USER_AGENT']), $gear_browser);
He encontrado una funcion parecida a la tuya function ObtenerNavegador($user_agent) { $navegadores = array( 'Opera' => 'Opera', 'Mozilla Firefox'=> '(Firebird)|(Firefox)', 'Galeon' => 'Galeon', 'Mozilla'=>'Gecko', 'MyIE'=>'MyIE', 'Lynx' => 'Lynx', 'Netscape' => '(Mozilla/4\.75)|(Netscape6)|(Mozilla/4\.08)|(Mozilla/4\.5)|(Mozilla/4\.6)|(Mozilla/4\.79)', 'Konqueror'=>'Konqueror', 'Internet Explorer 7' => '(MSIE 7\.[0-9]+)', 'Internet Explorer 6' => '(MSIE 6\.[0-9]+)', 'Internet Explorer 5' => '(MSIE 5\.[0-9]+)', 'Internet Explorer 4' => '(MSIE 4\.[0-9]+)', ); foreach($navegadores as $navegador=>$pattern){ if (eregi($pattern, $user_agent)) return $navegador; } return 'Desconocido'; } ?> ... <?php echo ObtenerNavegador($_SERVER['HTTP_USER_AGENT']) ?>
solo que la parte de if (eregi($pattern, $user_agent))
esta desfasada
Título: Re: javascript, reducir o "llamar" funcion
Publicado por: WHK en 8 Mayo 2012, 21:46 pm
Lo acabo de probar y funciona bién, vee si no tienes algun error de código antes de ese, intenta usar algun editor que te convierta todos los saltos de linea a un solo formato, yo uso mac y talves te den problema ya que no son lo mismo que windows.
Título: Re: javascript, reducir o "llamar" funcion
Publicado por: Neibar en 8 Mayo 2012, 21:51 pm
Fatal error: Using $this when not in object context in C:\xampp\htdocs\projecte\pag\content.php on line 32 $gear_browser = strtolower(trim($this -> gear_browser['browser'][0]));
Título: Re: javascript, reducir o "llamar" funcion
Publicado por: WHK en 8 Mayo 2012, 22:18 pm
aah verdad, reemplaza $this -> gear_browser por $gear_browser, se me habia olvidado quitarlo, esque lo utilizo dentro de una clase.
Título: Re: javascript, reducir o "llamar" funcion
Publicado por: Neibar en 8 Mayo 2012, 22:42 pm
aah verdad, reemplaza $this -> gear_browser por $gear_browser, se me habia olvidado quitarlo, esque lo utilizo dentro de una clase.
ok xD
|