Autor
|
Tema: javascript, reducir o "llamar" funcion (Leído 4,037 veces)
|
Neibar
Desconectado
Mensajes: 47
|
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>
|
|
|
En línea
|
|
|
|
WHK
|
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.
|
|
|
En línea
|
|
|
|
Neibar
Desconectado
Mensajes: 47
|
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
|
|
« Última modificación: 8 Mayo 2012, 21:37 pm por Neibar »
|
En línea
|
|
|
|
WHK
|
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.
|
|
|
En línea
|
|
|
|
Neibar
Desconectado
Mensajes: 47
|
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]));
|
|
|
En línea
|
|
|
|
WHK
|
aah verdad, reemplaza $this -> gear_browser por $gear_browser, se me habia olvidado quitarlo, esque lo utilizo dentro de una clase.
|
|
|
En línea
|
|
|
|
Neibar
Desconectado
Mensajes: 47
|
aah verdad, reemplaza $this -> gear_browser por $gear_browser, se me habia olvidado quitarlo, esque lo utilizo dentro de una clase.
ok xD
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
recursos visual basic, """"""proceso inmortal"""""
Análisis y Diseño de Malware
|
Dark4ngel
|
7
|
14,264
|
3 Noviembre 2011, 10:42 am
por Dark4ngel
|
|
|
[javascript] llamar a funcion que se recibe por parametro de la funcion
Desarrollo Web
|
Graphixx
|
0
|
6,060
|
24 Abril 2012, 19:36 pm
por Graphixx
|
|
|
Llamar a una " class " con javascript.
Desarrollo Web
|
Ori-chan
|
2
|
5,041
|
24 Enero 2013, 16:42 pm
por Ori-chan
|
|
|
[PROBLEMA][javascript] estoy aprendiendo y me da error "funcion is not defined"
Desarrollo Web
|
Noxware
|
2
|
2,548
|
6 Septiembre 2014, 17:29 pm
por Noxware
|
|
|
Porque es posible llamar a una función puntero sin usar "*" ?
Programación C/C++
|
patilanz
|
3
|
2,451
|
9 Julio 2015, 05:15 am
por x64core
|
|