Contenido
Buscar
Juez de EU ordena a Google abrir su tienda de aplicaciones Android a la competencia
El fallo castiga a la firma californiana por mantener un monopolio ilegal que ayudó a expandir su imperio digital.
// ——————————————————————————————————————————-
// PHOTOSWIPE
var initPhotoSwipeFromDOM = function(gallerySelector) {
// parse slide data (url, title, size …) from DOM elements
// (children of gallerySelector)
var parseThumbnailElements = function(el) {
var thumbElements = el.childNodes,
numNodes = thumbElements.length,
items = [],
figureEl,
linkEl,
size,
item;
for(var i = 0; i < numNodes; i++) {
figureEl = thumbElements[i]; //
// include only element nodes
if(figureEl.nodeType !== 1) {
continue;
}
linkEl = figureEl.children[0]; // element
size = linkEl.getAttribute(‘data-size’).split(‘x’);
// create slide object
item = {
src: linkEl.getAttribute(‘href’),
w: parseInt(size[0], 10),
h: parseInt(size[1], 10)
};
if(figureEl.children.length > 1) {
//
item.title = figureEl.children[1].innerHTML;
}
if(linkEl.children.length > 0) {
// thumbnail element, retrieving thumbnail url
item.msrc = linkEl.children[0].getAttribute(‘src’);
}
item.el = figureEl; // save link to element for getThumbBoundsFn
items.push(item);
}
return items;
};
// find nearest parent element
var closest = function closest(el, fn) {
return el && ( fn(el) ? el : closest(el.parentNode, fn) );
};
// triggers when user clicks on thumbnail
var onThumbnailsClick = function(e) {
e = e || window.event;
e.preventDefault ? e.preventDefault() : e.returnValue = false;
var eTarget = e.target || e.srcElement;
// find root element of slide
var clickedListItem = closest(eTarget, function(el) {
return (el.tagName && el.tagName.toUpperCase() === ‘FIGURE’);
});
if(!clickedListItem) {
return;
}
// find index of clicked item by looping through all child nodes
// alternatively, you may define index via data- attribute
var clickedGallery = clickedListItem.parentNode,
childNodes = clickedListItem.parentNode.childNodes,
numChildNodes = childNodes.length,
nodeIndex = 0,
index;
for (var i = 0; i = 0) {
// open PhotoSwipe if valid index found
openPhotoSwipe( index, clickedGallery );
}
return false;
};
// parse picture index and gallery index from URL (#&pid=1&gid=2)
var photoswipeParseHash = function() {
var hash = window.location.hash.substring(1),
params = {};
if(hash.length < 5) {
return params;
}
var vars = hash.split('&');
for (var i = 0; i < vars.length; i++) {
if(!vars[i]) {
continue;
}
var pair = vars[i].split('=');
if(pair.length getThumbBoundsFn section of documentation for more info
var thumbnail = items[index].el.getElementsByTagName(‘img’)[0], // find thumbnail
pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
rect = thumbnail.getBoundingClientRect();
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width};
}
};
// PhotoSwipe opened from URL
if(fromURL) {
if(options.galleryPIDs) {
// parse real index when custom PIDs are used
// http://photoswipe.com/documentation/faq.html#custom-pid-in-url
for(var j = 0; j < items.length; j++) {
if(items[j].pid == index) {
options.index = j;
break;
}
}
} else {
// in URL indexes start from 1
options.index = parseInt(index, 10) – 1;
}
} else {
options.index = parseInt(index, 10);
}
// exit if index not found
if( isNaN(options.index) ) {
return;
}
if(disableAnimation) {
options.showAnimationDuration = 0;
}
// Pass data to PhotoSwipe and initialize it
gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);
gallery.init();
};
// loop through all gallery elements and bind events
var galleryElements = document.querySelectorAll( gallerySelector );
for(var i = 0, l = galleryElements.length; i < l; i++) {
galleryElements[i].setAttribute('data-pswp-uid', i+1);
galleryElements[i].onclick = onThumbnailsClick;
}
// Parse URL and open gallery if it contains #&pid=3&gid=1
var hashData = photoswipeParseHash();
if(hashData.pid && hashData.gid) {
openPhotoSwipe( hashData.pid , galleryElements[ hashData.gid – 1 ], true, true );
}
};
// execute above function
initPhotoSwipeFromDOM('.my-gallery');
// ======================================
// FIN SCRIPTS PHOTOSWIPE
// ======================================
SAN FRANCISCO (AP) — Un juez de Estados Unidos ordenó el lunes a Google remover los muros digitales que protegen su tienda de aplicaciones Android de la competencia como castigo por mantener un monopolio ilegal que ayudó a expandir el imperio digital de la compañía.
La orden emitida por el juez federal James Donato obligará a Google a realizar varios cambios a los que la empresa de Mountain View, California, se había resistido, entre ellos una disposición que obligará a su Play Store para aplicaciones de Android a distribuir tiendas de aplicaciones rivales de terceros para que los consumidores puedan descargarlas en sus teléfonos si así lo desean.
La orden del juez también hará accesibles a la competencia las millones de aplicaciones Android de la biblioteca de Play Store, lo que les permitirá ofrecer una selección competitiva.
Donato dio a Google hasta noviembre para realizar las revisiones dictadas en su orden. La empresa había insistido en que tardaría entre 12 y 16 meses en diseñar las medidas de protección necesarias para reducir las posibilidades de que programas potencialmente maliciosos se abran paso en las tiendas de aplicaciones rivales e infecten millones de teléfonos Samsung y otros dispositivos móviles que funcionan con su software gratuito Android.
La revisión ordenada por los tribunales pretende impedir que Google bloquee la competencia en el mercado de aplicaciones Android, como parte de un esfuerzo por proteger un sistema de comisiones que ha sido beneficioso para una de las empresas más prósperas del mundo y ha contribuido a elevar el valor de mercado de su matriz Alphabet Inc. a 2 billones de dólares.
Google dijo en su blog que pedirá al tribunal que suspenda los cambios pendientes y que apelará la decisión del tribunal.
Donato también falló que, durante un periodo de tres años que finaliza el 1 de noviembre de 2027, Google no podrá compartir los ingresos de su Play Store con nadie que distribuya aplicaciones para Android o esté considerando lanzar una plataforma o tienda de distribución de aplicaciones para Android. Tampoco podrá pagar a los desarrolladores, ni compartir ingresos, para que lancen primero o en exclusiva una aplicación en Google Play Store, ni podrá llegar a acuerdos con los fabricantes para preinstalar Google Play Store en una ubicación específica en dispositivos Android. Tampoco podrá exigir a las aplicaciones que utilicen su sistema de facturación ni decir a los clientes que pueden descargar aplicaciones en otro sitio y potencialmente más baratas.
Las acciones de Alphabet cayeron 2.4% el lunes y cerraron en 162.98 dólares.
Comentarios
Otras Noticias
// autoTrigger on scroll until after the third request is loaded
$(‘.scroll’).jscroll({
autoTriggerUntil: 3,
loadingHtml: ‘Cargando mas noticias… ‘,
nextSelector: ‘.boton-ver-mas’,
});
window._taboola = window._taboola || [];
_taboola.push({
mode: ‘thumbnails-a-3×2’,
container: ‘taboola-mobile-below-article-thumbnails’,
placement: ‘Mobile Below Article Thumbnails’,
target_type: ‘mix’
});
// Obtener todos los elementos con clase .col-md-12
var colElements = document.querySelectorAll(‘.col-md-12’);
// Iterar sobre cada elemento
colElements.forEach(function(element) {
// Verificar si tiene un hijo inmediato con clase .titulo-region
var tituloRegion = element.querySelector(‘.titulo-region’);
if (tituloRegion) {
// Agregar la clase .is-sticky al elemento padre
element.classList.add(‘is-sticky’);
}
});
// Obtener el elemento article dentro de .fila-especial-v2 .p50
var articleElement = document.querySelector(‘.home .fila-especial-v2 .p50 article’);
// Obtener el texto del elemento .z-foto .bajada p
var bajadaText = articleElement.querySelector(‘.z-foto .bajada p’).textContent;
// Crear un nuevo elemento para mostrar el texto obtenido
var textoElement = document.createElement(‘p’);
textoElement.textContent = bajadaText;
// Obtener el elemento .z-txt .titulo dentro del article
var tituloElement = articleElement.querySelector(‘.z-txt .titulo’);
// Insertar el nuevo elemento al final del article
articleElement.appendChild(textoElement);