Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>JS Bin</title>
    <script>
    // Seu interpretador
    function interpreta(codigo) {
        console.log('interpretando ' + codigo);
    }
  
    // Cria objeto que vai monitorar alterações no DOM
    function criaObserver(el) {
        var observer = new MutationObserver(function(mutations) {
            // Loop sobre as mutações detectadas
            mutations.forEach(function(mutation) {
        
                // Inserção de nós aparecem em addedNodes
                var node = mutation.addedNodes[0];
        
                // Achou um script
                if(node.tagName === 'SCRIPT' && node.type === 'text/fooscript') {
            
                    // TODO: implementar chamada ajax síncrona (argh!) para pegar o código
                    if(node.src) {
                
                    }
            
                    // Passa o código para ser interpretado
                    interpreta(node.textContent || node.innerText);
        
                } 
            });    
        });
        // Inicia o observer, configurando-o para monitorar inserções de nós em qualquer nível
        observer.observe(el, { childList: true, subtree: true })
        return observer; 
    }
    var observer = criaObserver(document);
    </script>
    <!-- teste 1: script no head -->
    <script type="text/fooscript">
        bool funcionaNoHead = true;
    </script>
</head>
<body>
    <!-- teste 2: script no body -->
    <script type="text/fooscript">
        bool funcionaNoBody = true;
    </script>
    
    <div>
        <!-- teste 3: script no aninhado -->
        <script type="text/fooscript">
            bool funcionaAninhado = true;
        </script>
    </div>
    
    <script>
        observer.disconnect()
    </script>
</body>
</html>
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers