JSFiddle - React, Tailwind, and code Playground

by masbicudo

HTML

<iframe id="frame" width="300" height="300"></iframe>
<div id="output">Resultado:<br/></div>

JavaScript

$(function(){ 
    var createScript  = function(url){
		var s = document.createElement("script");
		s.type = "text/javascript";
		s.src = url;
		return s;	
	};
    //colocando jquery no iframe
    $("#frame").contents().find("body").append( createScript("https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js") ); //adicionando jquery
    
    var iframeWindow = $("#frame").get(0);
    var items = {};
    
    debugger;
    find(iframeWindow, [], {stop:false, cnt:0, items: items});
    // localizando as instâncias do jQuery
    var el = document.getElementById("output");
    el.innerHTML += (items.$.join("<br/>"));
    el.innerHTML += (items.jQuery.join("<br/>"));
    
    debugger;
    
    // iframeWindow.ownerDocument.defaultView NÃO É PARTE DO IFRAME
    el.innerHTML += ("<br/>"+"<br/>");
    el.innerHTML += (iframeWindow.ownerDocument.defaultView.$);
    el.innerHTML += ("<br/>"+"<br/>");
    el.innerHTML += (iframeWindow.ownerDocument.defaultView.$ === $);
    // iframeWindow.contentWindow É PARTE DO IFRAME
    el.innerHTML += ("<br/>"+"<br/>");
    el.innerHTML += (iframeWindow.contentWindow.$);
    // iframeWindow.contentDocument É PARTE DO IFRAME
    el.innerHTML += ("<br/>"+"<br/>");
    el.innerHTML += (iframeWindow.contentDocument.window.$);
});

function find(obj, path, opts)
{
    if (path.length < 4 && opts.stop==false)
    {
        try{
            for(var k in obj) {
                if (opts.stop)
                    return;
                
                path.push(k);
                try{
                    {
                        if (!opts.items[k]) opts.items[k] = [];
                        opts.items[k].push(path.join('.'));
                        if (typeof obj[k] != 'string')
                            find(obj[k], path, opts);
                    }
                }
                catch(x){
                    console.error(x);
                }
                finally{
                    path.pop();
                }
...