2016-03-28 12 views
5

HTML dosyasına içerikle yeni komut dosyası eklemek için aşağıdaki kodu kullanıyorum, Şu anda aşağıdaki kod çalışıyor ve varolan ilk komut dosyasından sonra yeni komut dosyası ekleniyor, Sorun içeriğin girintiye ait olmadığıYeni eklenen komut dosyası etiket içeriğinin girintisi nasıl değiştirilir

Aşağıdaki gibi girintili edilecek bunu değiştirmek istiyorum

<script> var keyOfFilesArray = Object.keys(data)[0]; var filesArray = data[keyOfFilesArray];   </script> 

(tek satırda olduğunu görebilir gibi) bu yeni eklenen komut dosyası çıktısıdır:

  1. ikinci katma açık komut dosyası etiketi olacakbu
gibi olmak değişkenler birbiri ardına ekleneceği
  • ilk komut etiket kapattıktan sonra hat sokulabilir
    <script> 
    var keyOfFilesArray = Object.keys(data)[0]; 
    var filesArray = data[keyOfFilesArray]; 
    </script> 
    

    Bunu nasıl yapabilirim?

    https://jsfiddle.net/k32ntkr8/

    Bu JS kodunu olduğunu ... Ben eklemeniz gerekir inanıyoruz/n ama emin değilim nerede eklemek için en iyi yoldur

    btn.onclick = function(e){ 
    debugger; 
    var innerhtml = [ 
         ' var keyOfFilesArray = Object.keys(data)[0];', 
         ' var filesArray = data[keyOfFilesArray];   ' 
        ].join(''); 
    
        var html = process(input.defaultValue,innerhtml); 
        output.value = html; 
    
    } 
    
    
    function process(html,innerhtml) { 
        var escapedHTML = html 
         .replace(/body/g, 'body$') 
         .replace(/head/g, 'head$'); 
        sandbox.innerHTML = escapedHTML; 
    
        var script = sandbox.querySelectorAll('#app-ux-bootstrap')[0]; 
    
        var newScript = document.createElement('script'); 
        newScript.innerText = innerhtml; 
        script.parentNode.insertBefore(newScript, script.nextSibling); 
    
        var unescapedHTML = sandbox.innerHTML 
         .replace(/body\$/g, 'body') 
         .replace(/head\$/g, 'head') 
         .replace(/&quot;/g, "'"); 
    
        return (
         '<!DOCTYPE HTML>\n<html>' + 
         unescapedHTML + 
         '</html>' 
        ); 
    
    }; 
    

    olabileceğini nasıl bitti mi? lütfen önermek, aşağıdaki cevap çok yardımcı olmaz ... Eğer bu soruyu bir şekilde geliştirirsem bir şekilde lütfen bana bildirin.

  • +0

    Üzgünüz, ama neden bunu yapmak isteyeyim? Çoğu zaman, insanlar kodlarını bitirdiklerinde, daha küçük dosyalara sahip olmalarını en aza indiriyorlar, tam tersi değil ... Sadece merak ediyorum ... –

    +0

    @BozidarSikanjic - yapıyı küçülterek dosyanın küçültülmesini istiyorum ama bunu göstermem gerekiyor Bazı editör önce dosya ... –

    cevap

    1

    Tamam, bu

    btn.onclick = function(e){ 
    debugger; 
    var innerhtml = [ 
         '', 
         '  <script>', 
         '   var keyOfFilesArray = Object.keys(data)[0];', 
         '   var filesArray = data[keyOfFilesArray];   ', 
         '  <\/script>' 
        ].join('\n'); 
    
        var html = process(input.defaultValue,innerhtml); 
        output.value = html; 
    
    } 
    

    için tıklamada işlevi değiştirmek Ve bu

    var script = sandbox.querySelectorAll('#app-ux-bootstrap')[0]; 
    script.parentNode.insertAdjacentHTML('afterBegin', innerhtml); 
    

    senaryoyu doldurmak process satırlarını değiştirirseniz bu çıktıyı almalısınız

    <head> 
        <script> 
        var keyOfFilesArray = Object.keys(data)[0]; 
        var filesArray = data[keyOfFilesArray];   
        </script> 
    ... 
    </head> 
    
    +0

    Teşekkürler ama tam olarak bunu yapmak daha iyi? –

    +0

    Bunu denedin mi? Çalışmıyor. – Adjit

    +0

    Şimdi bunu yaptığınız yerde yapabilirsiniz, ancak boş bir dize ile birleştirmek yerine – gabesoft

    1

    Böyle bir şey mi var?

    var innerhtml = [ 
        '\tvar keyOfFilesArray = Object.keys(data)[0];', 
        '\tvar filesArray = data[keyOfFilesArray];' 
    ].join("\n"); 
    
    var script_code = '<script>\n' + innerhtml + '\n<\/script>'; 
    

    Ardından, sayfada görüntülenmesini istediğiniz yere script_code değişkenini ekleyin.

    https://jsfiddle.net/e72c17zg/1/

    +0

    Genel olabilir mi? Demek istediğim, bu iç html içinde herhangi bir dize birleştirme olmadan ve '\ t' sağladığınız sonuç olarak nasıl oluşturabilirim? –