Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - #!drvy

#461
El enlace que pasas, no tiene ningún div con id interContainer. Donde si que existe ese ID es dentro del iframe que apunta a la URL que te pase (vergol.com).



De hecho esta dentro de 2 iframes:



Al estar dentro de un iframe y que el iframe apunte a otro dominio, javascript no puede hacer nada dentro. Puedes leer sobre eso buscado Crossdomain, same-origin o CORS.


Lo que tendrias que hacer es que tu script de greasemonkey, apuntase a ese dominio. Tomando de ejemplo lo que ha pasado el compañero y cambiando la URL quedaria así:


// ==UserScript==
// @name         ScriptDePrueba
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Script de prueba
// @author       unsigned
// @match        https://vergol.com/canales228/live/la1.php
// @grant        none
// ==/UserScript==

function gm_main(){
  // 1. Create the button
  var button = document.createElement("button");
  button.innerHTML = "Do Something";

  // 2. Append somewhere
  var body = document.getElementsByTagName("body")[0];
  body.appendChild(button);

  // 3. Add event handler
  button.addEventListener ("click", function() {
      alert(document.getElementById("interContainer").innerHTML);
  });
}

(function() {
   'use strict';

   window.onload = gm_main();

})();



Y si abres directamente esa url, verás que si funciona.. Ahora tienes otros 2 problemas.

- La pagina original no muestra todo el contenido del iframe. Muestra solo los primeros 600 pixeles. Por lo tanto no ves el boton.
- Greasemonkey no parece cargarse cuando la página se ejecuta dentro de un iframe.

Buscando, he llegado a esto:

https://github.com/greasemonkey/greasemonkey/issues/2574

Donde se menciona que a partir de X actualización, ha dejado de ejecutar los scripts dentro de iframes. Al parecer hay un workaround que es cambiar el iframe por un embed, pero tendrias que cambiarlo tanto en la página principal como en el primer iframe.  Otros directamente dicen que mejor usar otras cosas como Tampermonkey.


He instalado Tampermonkey y efectivamente si que funciona bien:

Código (javascript) [Seleccionar]
// ==UserScript==
// @name         ScriptDePrueba
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Script de prueba
// @author       unsigned
// @match        https://vergol.com/*
// @grant        none
// ==/UserScript==

function gm_main(){
   var container = document.getElementById('interContainer');

   // Si el contendor no existe, no me ejecuto.
   if (container.length < 1) {
       return;
   }

   alert(document.getElementById("interContainer").innerHTML);
}

(function() {
   'use strict';
   window.onload = gm_main();
})();


Saludos
#462
Estas targeteando contenido dentro de un iframe. Y el iframe no esta en el mismo dominio que la página esa ende javascript no puede ayudar en esa página en especifico. Tendrias que targetear la propia pagina del iframe:

//vergol.com/canales228/live/la1.php

Saludos
#463
Es MUY lamentable esa situación... no importa si EE.UU. ha comprado toda la partida hasta septiembre o no... lo super lamentable es que la han comprado a un precio exagerado y seguirán cobrándole entre 2000 y 3000 USD a sus ciudadanos por el tratamiento.  Los ciudadanos de Estados Unidos pagaron con impuestos los subsidios para el desarrollo de ese medicamento y ahora tienen que pagarse los costos de su tratamiento igualmente...

Luego esa misma gente es la que no se fía de la Sanidad Publica porque dicen que es mucho impuesto... el lobby americano desde luego sabe como lavar cerebros...


CitarGilead Sciences, the maker of the first covid-19 treatment found to have worked in clinical trials, remdesivir, said Monday it will charge U.S. hospitals $3,120 for the typical patient with private insurance.


Y ojo, porque eso son $3120 para gente con seguro médico en un país donde más de 27 millones de personas carecen de seguro médico y otras decenas de millones tienen seguros muy restrictivos o temporales.

Lamentable.
Saludos
#464
Se juntaron 2....

Saludos
#465
¿Cuál es el código que tienes para hacer el click?

Quiero pensar que es porque tu código se ejecuta antes de que se cargue esa parte del DOM.

Saludos
#466
Generalmente no tiene nada de malo utilizar librerías de terceros. Te ahorras tiempo, dolores de cabeza, y casos en los que no has pensado. Por ejemplo, enla funcion PHP que muestras, que pasa si le paso un string como este:

<p>http://google.com</p>

Te va a devolver esto:

Código (html5) [Seleccionar]
<p><a target="_blank" href="http://google.com</p>">http://google.com</p></a>

Lo cual obviamente esta rotisimo... E incluso no tenemos que ir tan lejos, basta con que el texto incluya comillas:

Puedes leer más sobre tortugas en "https://es.wikipedia.org/wiki/Testudines"

Código (html5) [Seleccionar]
Puedes leer más sobre tortugas en "<a target="_blank" href="https://es.wikipedia.org/wiki/Testudines"">https://es.wikipedia.org/wiki/Testudines"</a>

Ahí rompes todo el HTML con una simple camilla doble. Ya que usas ReGeX, te puedes asegurar de capturar solo lo que consideraríamos como una URL valida.

https://regexr.com/3e6m0

Eso sacado de StackOverflow con más de 600 votos.. Y aun así, no es válido porque no aceptaría dominios perfectamente válidos como:

https://hello.amsterdam/
https://barça.cat
http://ñoño.com


Porque limita el TLD a un máximo de 6 caracteres y solo espera a-z sin caracteres UTF-8. Tampoco acepta todo mayúsculas...

((http|https)\:\/\/)?[\w0-9\-\.]{1,255}\.[\w]{2,63}(\/[\w_\.\/\#]*)?

Este más o menos cumple con su cometido... Aunque si no lleva http/https delate, habría que ponerlo y eso implica comprobar antes de hacer el replace. En PHP seria algo así:

Código (php) [Seleccionar]
function makeLinks(string $string): string
{
   $regex = '/((http|https)\:\/\/)?[\w0-9\-\.]{1,255}\.[\w]{2,63}(\/[\w_\.\/\#]*)?/iu';
   $links = preg_match_all($regex, $string, $output);

   foreach ($output[0] as $link) {
       $url = strtolower($link);

       // Comprobar si empieza por http/https
       if (strpos($url, 'http://') !== 0 && strpos($url, 'https://') !== 0) {
           $url = 'http://' . $url;
       }

       // Creamos un enlace valido manteniendo el formato original.
       $anchor = sprintf('<a href="%s" target="_blank">%s</a>', $url, $link);
       $string = str_replace($link, $anchor, $string);
   }

   return $string;
}



Donde un texto como este:

Puedes leer más sobre tortugas en "https://es.wikipedia.org/wiki/Testudines" y para todo lo demás google.com

Se convierte en esto:

Código (html5) [Seleccionar]
Puedes leer más sobre tortugas en "<a href="https://es.wikipedia.org/wiki/testudines" target="_blank">https://es.wikipedia.org/wiki/Testudines</a>" y para todo lo demás <a href="http://google.com" target="_blank">google.com</a>


Ahora, en javascript hay un problema enorme, hasta ES6 javascript no tenía soporte para unicode en regex. Ende, no podemos utilizar el importantísimo flag /u (unicode) y por lo tanto, no podemos targetear dominios como ñoño.com sin añadir parafernalias como \0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF]) . Hay 3 opciones, o nos saltamos los dominios unicode... no muy recomendable, o solo soportamos navegadores con ES6 (tampoco muy recomendable) o toca transpilar ( https://github.com/mathiasbynens/regexpu )  y con suerte sacar algo funcional...

Yo este paso me lo salto y voy a quitarme unicode de por medio, más que nada para ahorrar tiempo:

Código (javascript) [Seleccionar]
function makeLinks(string) {
   var regex = /((http|https)\:\/\/)?[\w0-9\-\.]{1,255}\.[\w]{2,63}(\/[\w_\.\/\#]*)?/ig;
   var output = string.match(regex);

   if (!output || output.length < 1) {
       return string;
   }

   for (var i = 0, t = output.length; i < t; ++i) {
       var link = output[i];
       var url  = link.toLowerCase();

       if (!/^https?:\/\//.test(url)) {
           url = 'http://' + url;
       }

       var anchor = '<a href="' + url + '" target="_blank">' + link + '</a>';
       string = string.replace(link, anchor);
   }

   return string;
}


Con ES6 quedaría un poco más bonito:

Código (javascript) [Seleccionar]
function makeLinks(string) {
   const regex = /((http|https)\:\/\/)?[\w0-9\-\.]{1,255}\.[\w]{2,63}(\/[\w_\.\/\#]*)?/ig;
   const output = string.match(regex);

   if (!output || output.length < 1) {
       return string;
   }

   output.forEach((link) => {
       let url = link.toLowerCase();
           url = (!/^https?:\/\//.test(url) ? `http://${url}` : url);

       string = string.replace(link, `<a href="${url}" target="_blank">${link}</a>`);
   });

   return string;
}



Código (javascript) [Seleccionar]
console.log(makeLinks('Puedes leer más sobre tortugas en "https://es.wikipedia.org/wiki/Testudines" y para todo lo demás google.com'));


Y todo esto, te lo puedes ahorrar con:

Código (javascript) [Seleccionar]
<script src="linkify.min.js"></script>
<script src="linkify-html.min.js"></script>
<script>
   console.log(linkifyHtml('Puedes leer más sobre tortugas en "https://es.wikipedia.org/wiki/Testudines" y para todo lo demás google.com', {
       className: '',
       defaultProtocol: 'http'
   }));
</script>


... pero no quieres usar librerías de terceros xD


Saludos
#467
CitarSi china se comporta de esta forma es justamente por que esta asustada y se siente rodeada, tal vez no lo notaste, pero al mismo tiempo que estallo este conflicto entre China y la India, Japon comenzo a movilizar su armada hacia el mar del sur de China.

Subestimas mucho a China y creo que no te das cuenta de que realmente es la única potencia con capacidad de proyectar poder militar en la región más allá de Estados Unidos y sus bases en Corea del Sur y Japón. NO en vano a China se le llama potencia mundial y no en vano se puede permitir una guerra económica con Estados Unidos mientras extermina a gente en conflictos locales en él oste de su territorio.

Decir que China se copia tecnología es algo obsoleto. A estas alturas China es el único país con capacidad industrial para fabricar cualquier tecnología en tiempo récord y a un coste ridículo. No en vano todas las compañías tecnologías fabrican ahí y las que no lo hacen no son competitivas económicamente.

Japón NO puede atacar a nadie constitucionalmente al haber perdido la segunda guerra mundial. Solo puede usar sus "Fuerzas de Autodefensa" para ..... defensa propia. Además de ello, la capacidad de sus fuerzas armadas es puramente defensiva y les faltan medios incluso básicos para proyectar poder militar más allá de su territorio.

Pakistán no creas que se va a quedar mirando con palomitas. China le puede dar muchos incentivos y armarles en tiempo récord para otra guerra Indo-pakistani como conflicto proxy y listo.


En fin, nadie se come a nadie así de fácil y una guerra Sino-India va a durar un buen rato, pero desde luego, al final, China tiene todas las de ganar una guerra convencional entre ambos. Tanto militar como económicamente.

Saludos
#468
Una cepa de la influenza se puede generar en cualquier parte del mundo. El último brote de H1N1  calificado de pandemia se detectó en México. Uno de los brotes más gordos, la Gripe Española se produjo en Estados Unidos. Hay cepas detectadas en regiones específicas como la H1N2 en Japón y Europa o la H3N3 en Canadá.

Cada año se infectan unas cuantas personas y cada año hay un candidato potencial a pandemia. Hay años en los que se expande y hay años en los que no.

Saludos
#469
Ahora mismo su integridad física no peligra nada. Después, tampoco. Gracias al Former Presidents Act y resurgido por el FPPA, todos los ex-presidentes se benefician de protección oficial del servicio secreto de Estados Unidos para el resto de su vida.

A no ser que por algún milagro los republicanos decidan que no van a proteger a Trump en congreso/senado y este acabe expulsado o sea juzgado después de su mandato, Trump y su familia inmediata están protegidos de GRATIS para el resto de su vida... y así puede seguir aprovechado a meter los agentes que le protegen en su propio hotel y cobrar cantidades absurdas al estado... es decir, además de protegerle, tienen que pagarle jaja.


En fin, Irán se ha ganado el hazme reír del mes.

Saludos