Javascript 将脚本内的内容获取为文本
我想打印一个脚本标记的内容,jquery可以吗 index.htmlJavascript 将脚本内的内容获取为文本,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:
<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 ...
});
}
}