Ответ 1
Просто дайте тегу script идентификатор:
<div></div>
<script id='script' type='text/javascript'>
$('div').html($('#script').html());
</script>
Я хотел бы распечатать содержимое тега script, возможно ли это с помощью jquery?
index.html
<script type="text/javascript">
function sendRequest(uri, handler)
{
}
</script>
код
alert($("script")[0].???);
результат
function sendRequest(uri, handler)
{
}
Просто дайте тегу script идентификатор:
<div></div>
<script id='script' type='text/javascript'>
$('div').html($('#script').html());
</script>
Вы можете использовать собственный Javascript для этого!
Это напечатает содержимое первого script в документе:
alert(document.getElementsByTagName("script")[0].innerHTML);
Это напечатает содержимое script с идентификатором id = > "myscript":
alert(document.getElementById("myscript").innerHTML);
Попробуйте следующее:
console.log(($("script")[0]).innerHTML);
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, "<")
.replace(/>/g, ">")
.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>
Вы можете использовать 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 ...
});
}
}