Archivo de noviembre de 2016

Cordova – Problema de seguridad al cargar archivos del dispositivo

Publicado por Iván Gajate el 30 de noviembre de 2016 en Desarrollo Web, JavaScript | No hay comentarios »

Si estamos tratando de cargar un archivo desde el móvil, por ejemplo tras buscarlo con el explorador de archivos de Android, seguramente nos dará un error como este:

Refused to connect to 'content://...' because it violates the following Content Security Policy directive...

Esto es debido a que las rutas de tipo “content://…” no son rutas válidas cuando hacemos un window.resolveLocalFileSystemURL (plugin File)

Para obtener la ruta real (del tipo file:///…) necesitamos usar Cordova Plugin FilePath, así:

window.FilePath.resolveNativePath('content://com.android.externalstorage.documents/document/...', successCallback);
 
function successCallback(realPath){
   console.log(realPath);   // file:///storage/emulated/0/Android/data...
}

Lo he encontrado tras mucho buscar, en Ourcodeworld

Descargar Cordova Plugin FilePath

JS – Getters y Setters implícitos en un objeto

Publicado por Iván Gajate el 19 de noviembre de 2016 en JavaScript | No hay comentarios »

Podemos añadir métodos getters y setters implícitos a nuestros propios objetos, tal y como se hace en otros lenguajes de programación.

var Bola = function(){
   var _api = {};
   var _diametro = 10;
 
   // Defino la propiedad "diametro" en el objeto que retorna mi constructor
   Object.defineProperty(_api, 'diametro', {
      get:function(){
         return _diametro;
      },
      set:function(value){
         _diametro=value;
      }
   });
 
   return _api;
}

Ahora podemos crear una instancia de Bola y utilizar nuestros nuevos métodos diametro (getter) y diametro=valor (setter)

var miBola = new Bola();
miBola.diametro;   // 10
miBola.diametro = 55;
miBola.diametro;   // 55

Documentación de Object.defineProperty()