Javascript 将脚本内的内容获取为文本

Javascript 将脚本内的内容获取为文本,javascript,jquery,script-tag,Javascript,Jquery,Script Tag,我想打印一个脚本标记的内容,jquery可以吗 index.html <script type="text/javascript"> function sendRequest(uri, handler) { } </script> 结果 function sendRequest(uri, handler) { } 试试这个: console.log(($("script")[0]).innerHTML); 只需给脚本标记一个id:

我想打印一个脚本标记的内容,jquery可以吗

index.html

<script type="text/javascript">

    function sendRequest(uri, handler)
    {


    }
</script>
结果

function sendRequest(uri, handler)
{


}
试试这个:

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

只需给脚本标记一个id:

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

$('div').html($('script').html());
​

您可以使用本机Javascript来实现这一点

这将打印文档中第一个脚本的内容:

alert(document.getElementsByTagName("script")[0].innerHTML);
这将打印id=>“myscript”的脚本内容:

打印内部脚本:
var isIE=!document.currentScript;
函数renderPRE(脚本,代码scriptname){
如果(isIE)返回;
var jsCode=script.innerHTML.trim();
//两个“退出”开始和“退出”结束注释之间的退出角括号
让textsToEscape=jsCode.match(新的RegExp(“//\u ESCAPE\u START”([^]*?)//\u ESCAPE\u END”,'mg');
if(textsToEscape){
textsToEscape.forEach(textsToEscape=>{
jsCode=jsCode.replace(textToEscape,textToEscape.replace(//g,“>”)
.replace(“//”转义\开始“”,“”)
.replace(“//”转义\结束“”,“”)
.trim());
});
}
script.insertAdjacentHTML('afterend',“
”+jsCode+“
”); }

//打印此脚本:
让localScript=document.currentScript;
setTimeout(函数(){
渲染器(本地脚本)
}, 1000);

您可以使用document.getElementsByTagName(“脚本”)获取包含所有脚本的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 ...
            });         
    }
}
var scripts=document.getElementsByTagName(“脚本”);

对于(var i=0;i访问当前脚本的正确方法是
document.scripts
(类似于数组
HTMLCollection
),最后一个元素始终是当前脚本,因为它们被处理并按解析和执行的顺序添加到该列表中

var len=document.scripts.length;

console.log(document.scripts[len-1].innerHTML);
如果脚本引用了src,那么它会变得很棘手。您可以执行ajax调用,然后调用脚本源,或者在加载页面之前使用服务器端获取它。将返回
“”
对于
我认为它应该是
innerText
而不是
innerHtml
@LuisVargas,不,这也不起作用,我认为这是因为这些函数在标签打开和关闭之间获取元素的内容,而外部脚本在那里没有内容。外部标签可以动态加载替代内联。然后代码将插入到开始标记和结束标记之间。这对我来说很有用。是否有某种方法可以使用此方法选择具有特定类型属性的脚本标记?特别是应用程序/ld+json?是否有某种方法可以选择整页上该类型的所有脚本标记内容?console.log($(“#script”)[0].innerHTML);截至2019年2月,您的MDN链接显示这是一项不推荐使用的功能。
alert(document.getElementById("myscript").innerHTML);
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 ...
            });         
    }
}