Entonces, digamos que tenemos este código en un iFrame. Estoy bastante seguro de que el iFrame es del mismo dominio, eso es importante, creo.
<div id="10">You become 1 best coder</div>Quiero un script de Greasemonkey que ejecute un script solo si tanto "div id=10" como el texto (o parte del texto) son verdaderos.
Intenté esto:
// ==UserScript== // @name Script // @include https://www.somesite.com/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js // @grant GM_addStyle // ==/UserScript== /*- The @grant directive is needed to work around a design change introduced in GM 1.0. It restores the sandbox. */ var intv = setInterval(function() { const sp = document.querySelector('#10'); // find id (some) if (sp && sp.textContent === 'You become 1 best coder') { alert('Hello world!'); } }, 5000);Y esto funciona en una página regular con contenido regular. Pero cuando el contenido que necesito que identifique la secuencia de comandos para poder ejecutarlo se carga dentro de un iFrame, la secuencia de comandos no se ejecuta.
Aquí hay un ejemplo del código iFrame:
<iframe src="something.php?text=M0000310y100g190e500A78014607601&lalala=tT6&ctrl=032a4c3342e76e97ea21821a5c5f800e&mamama=c2ed5535532cc20aef064db2b4" width="100%" height="100%" frameborder="0"></iframe>Supongo que el iFrame es del mismo dominio, porque si fuera de un dominio diferente, el src="" sería diferente, creo...
¿Alguien puede ayudar? Gracias
Primero necesitas obtener el iframe . Si ese es el único entonces puedes probar....
Nota: Actualizado en base al comentario
// ==UserScript== // @name Script // @include https://www.somesite.com/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js // @grant GM_addStyle // ==/UserScript== /*- The @grant directive is needed to work around a design change introduced in GM 1.0. It restores the sandbox. */ const intv = setInterval(function() { const iframe = document.querySelector('iframe[src*="something.php"]'); const sp = iframe && iframe.contentWindow.document.body.querySelector('#10'); // find id (some) if (sp && sp.textContent === 'You become 1 best coder') { alert('Hello world!'); } }, 5000);Actualizar
El contenido del iframe también es un documento. Si el código no necesita interactuar con el marco principal, puede inyectar el script de usuario en el documento iframe de destino y ejecutarlo allí.