elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  javascript, reducir o "llamar" funcion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: javascript, reducir o "llamar" funcion  (Leído 3,620 veces)
Neibar

Desconectado Desconectado

Mensajes: 47


Ver Perfil
javascript, reducir o "llamar" funcion
« 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?

Código
  1. <script language="javascript">
  2. //detección del navegador
  3. var BrowserDetect = {
  4.   init: function () {
  5.  this.browser = this.searchString(this.dataBrowser) || "unknown";
  6.  this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "unknown";
  7.  this.OS = this.searchString(this.dataOS) || "an unknown OS";
  8.   },
  9. searchString: function (data) {
  10.   for (var i=0;i<data.length;i++) {
  11.  var dataString = data[i].string;
  12.  var dataProp = data[i].prop;
  13.  this.versionSearchString = data[i].versionSearch || data[i].identity;
  14.  if (dataString) {
  15. if (dataString.indexOf(data[i].subString) != -1)
  16. return data[i].identity;
  17.  }
  18.  else if (dataProp)
  19.  return data[i].identity;
  20.   }
  21. },
  22. searchVersion: function (dataString) {
  23.   var index = dataString.indexOf(this.versionSearchString);
  24.   if (index == -1) return;
  25.   return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
  26. },
  27. dataBrowser: [
  28. {
  29.   string: navigator.vendor,
  30.   subString: "Apple",
  31.   identity: "Safari"
  32. },
  33. {
  34.   prop: window.opera,
  35.   identity: "Opera"
  36. },
  37. {
  38.   string: navigator.vendor,
  39.   subString: "iCab",
  40.   identity: "iCab"
  41. },
  42. {
  43.   string: navigator.vendor,
  44.   subString: "KDE",
  45.   identity: "Konqueror"
  46. },
  47. {
  48.   string: navigator.userAgent,
  49.   subString: "Firefox",
  50.   identity: "Firefox"
  51. },
  52. {
  53.   string: navigator.vendor,
  54.   subString: "Camino",
  55.   identity: "Camino"
  56. },
  57. { // for newer Netscapes (6+)
  58.   string: navigator.userAgent,
  59.   subString: "Netscape",
  60.   identity: "Netscape"
  61. },
  62. {
  63.   string: navigator.userAgent,
  64.   subString: "MSIE",
  65.   identity: "Explorer",
  66.   versionSearch: "MSIE"
  67. },
  68. {
  69.   //esta parte reconoce el chrome
  70.   string: navigator.userAgent,
  71.   subString: "Gecko",
  72.   identity: "Chrome", //Mozilla
  73.   versionSearch: "rv"
  74. },
  75. { // for older Netscapes (4-)
  76.   string: navigator.userAgent,
  77.   subString: "Mozilla",
  78.   identity: "Netscape",
  79.   versionSearch: "Mozilla"
  80. }
  81. ],
  82. dataOS : [
  83. {
  84.   string: navigator.platform,
  85.   subString: "Win",
  86.   identity: "Windows"
  87. },
  88. {
  89.   string: navigator.platform,
  90.   subString: "Mac",
  91.   identity: "Mac"
  92. },
  93. {
  94.   string: navigator.platform,
  95.   subString: "Linux",
  96.   identity: "Linux"
  97. }
  98. ]
  99.  
  100. };
  101. BrowserDetect.init();
  102.  
  103. //estilos de cada navegador
  104. if (BrowserDetect.browser == "Firefox") {
  105. document.write("<LINK REL='stylesheet' HREF='../css/content.css' TYPE='text/css'>");
  106. } else {
  107.  
  108. if (BrowserDetect.browser == "Explorer"){
  109.   if (BrowserDetect.version>=7){
  110.  document.write("<LINK REL='stylesheet' HREF='../css/ie7.css' TYPE='text/css'>");
  111.   }
  112. } else {
  113.  
  114. if (BrowserDetect.browser == "Opera"){
  115.  if (BrowserDetect.version<9){
  116. document.write("<LINK REL='stylesheet' HREF='../css/opera.css' TYPE='text/css'>");
  117.  }else{
  118. document.write("<LINK REL='stylesheet' HREF='../css/opera9.css' TYPE='text/css'>");
  119.  }
  120. } else {
  121.  
  122. if (BrowserDetect.browser == "Safari"){
  123. document.write("<LINK REL='stylesheet' HREF='../css/safari.css' TYPE='text/css'>");
  124. }else{
  125. document.write("<LINK REL='stylesheet' HREF='../css/chrome.css' TYPE='text/css'>");
  126. }
  127. }
  128. }
  129. }
  130.  
  131. </script>
  132.  


En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: javascript, reducir o "llamar" funcion
« Respuesta #1 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:
Código
  1. <?php
  2. /* Detecta el motor del agente de usuario */
  3. 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);
  4. if($gear_browser['browser'][0]){
  5. $gear_browser = strtolower(trim($this->gear_browser['browser'][0]));
  6. $gear_browser = str_replace(
  7. array('msie','firefox','konqueror','opera','safari'),
  8. array('trident','gecko','khtml','presto','webkit'),
  9. $gear_browser);
  10. }
  11. 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 Desconectado

Mensajes: 47


Ver Perfil
Re: javascript, reducir o "llamar" funcion
« Respuesta #2 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

Código
  1. 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

Código
  1. function ObtenerNavegador($user_agent) {
  2.     $navegadores = array(
  3.          'Opera' => 'Opera',
  4.          'Mozilla Firefox'=> '(Firebird)|(Firefox)',
  5.          'Galeon' => 'Galeon',
  6.          'Mozilla'=>'Gecko',
  7.          'MyIE'=>'MyIE',
  8.          'Lynx' => 'Lynx',
  9.          'Netscape' => '(Mozilla/4\.75)|(Netscape6)|(Mozilla/4\.08)|(Mozilla/4\.5)|(Mozilla/4\.6)|(Mozilla/4\.79)',
  10.          'Konqueror'=>'Konqueror',
  11.          'Internet Explorer 7' => '(MSIE 7\.[0-9]+)',
  12.          'Internet Explorer 6' => '(MSIE 6\.[0-9]+)',
  13.          'Internet Explorer 5' => '(MSIE 5\.[0-9]+)',
  14.          'Internet Explorer 4' => '(MSIE 4\.[0-9]+)',
  15. );
  16. foreach($navegadores as $navegador=>$pattern){
  17.       if (eregi($pattern, $user_agent))
  18.       return $navegador;
  19.    }
  20. return 'Desconocido';
  21. }
  22. ?>
  23.  
  24. ...
  25.  
  26. <?php echo ObtenerNavegador($_SERVER['HTTP_USER_AGENT']) ?>
  27.  

solo que la parte de

Código
  1. if (eregi($pattern, $user_agent))
  2.  
esta desfasada
« Última modificación: 8 Mayo 2012, 21:37 pm por Neibar » En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: javascript, reducir o "llamar" funcion
« Respuesta #3 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.
En línea

Neibar

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Re: javascript, reducir o "llamar" funcion
« Respuesta #4 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
Código
  1. $gear_browser = strtolower(trim($this -> gear_browser['browser'][0]));
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: javascript, reducir o "llamar" funcion
« Respuesta #5 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.
En línea

Neibar

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Re: javascript, reducir o "llamar" funcion
« Respuesta #6 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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines