Получить контент внутри script как текст

Я хотел бы распечатать содержимое тега script, возможно ли это с помощью jquery?

index.html

<script type="text/javascript">

    function sendRequest(uri, handler)
    {


    }
</script>

код

alert($("script")[0].???);

результат

function sendRequest(uri, handler)
{


}

Ответы

Ответ 1

Просто дайте тегу script идентификатор:

<div></div>
<script id='script' type='text/javascript'>
    $('div').html($('#script').html());
</script>
​

http://jsfiddle.net/UBw44/

Ответ 2

Вы можете использовать собственный Javascript для этого!

Это напечатает содержимое первого script в документе:

alert(document.getElementsByTagName("script")[0].innerHTML);

Это напечатает содержимое script с идентификатором id = > "myscript":

alert(document.getElementById("myscript").innerHTML);

Ответ 3

Попробуйте следующее:

console.log(($("script")[0]).innerHTML);

Ответ 4

Печать внутреннего скрипта:

var isIE = !document.currentScript;

function renderPRE( script, codeScriptName ){
  if (isIE) return;
  
  var jsCode = script.innerHTML.trim();
  // escape angled brackets between two _ESCAPE_START_ and _ESCAPE_END_ comments
  let textsToEscape = jsCode.match(new RegExp("// _ESCAPE_START_([^]*?)// _ESCAPE_END_", 'mg'));
  if (textsToEscape) {
    textsToEscape.forEach(textToEscape => {
      jsCode = jsCode.replace(textToEscape, textToEscape.replace(/</g, "&lt")
        .replace(/>/g, "&gt")
        .replace("// _ESCAPE_START_", "")
        .replace("// _ESCAPE_END_", "")
        .trim());
    });
  }
  script.insertAdjacentHTML('afterend', "<pre class='language-js'><code>" + jsCode + "</code></pre>");
}
<script>
// print this script:

let localScript = document.currentScript;

setTimeout(function(){
  renderPRE(localScript)
}, 1000);
</script>

Ответ 5

Вы можете использовать document.getElementsByTagName("script"), чтобы получить HTMLCollection со всеми сценариями, а затем выполнить итерацию для получения текста каждого сценария. Очевидно, что вы можете получить текст только для локального JavaScript. Для внешнего скрипта (src=) вы должны использовать ajax-вызов для получения текста. Использование jQuery примерно так:

var scripts=document.getElementsByTagName("script");
for(var i=0; i<scripts.length; i++){
    script_text=scripts[i].text;
    if(script_text.trim()!==""){ // local script text 
        // so something with script_text ...
    }
    else{ // external script get with src=...
        $.when($.get(scripts[i].src))
            .done(function(script_text) {
              // so something with script_text ...
            });         
    }
}