我想用jquery打印脚本标签的内容吗?
的index.html
<script type="text/javascript">
function sendRequest(uri, handler)
{
}
</script>
代码
alert($("script")[0].???);
结果
function sendRequest(uri, handler)
{
}
答案 0 :(得分:19)
只需为您的脚本标记添加一个ID:
<div></div>
<script id='script' type='text/javascript'>
$('div').html($('#script').html());
</script>
答案 1 :(得分:18)
您可以使用原生Javascript执行此操作!
这将打印文档中第一个脚本的内容:
strcpy()
这将打印具有id =&gt;的脚本的内容&#34;的MyScript&#34;:
alert(document.getElementsByTagName("script")[0].innerHTML);
答案 2 :(得分:8)
试试这个:
console.log(($("script")[0]).innerHTML);
答案 3 :(得分:0)
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>
var src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js";
// Exmaple from:
// https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest
function reqListener(){
console.log( this.responseText );
}
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", src);
oReq.send();
如果要打印外部脚本的内容(文件必须驻留在相同域中),则可以使用具有rel="import"
属性的<link>
标签,然后将脚本的源代码置于href
属性中。这是此网站的有效示例:
<!DOCTYPE html>
<html lang="en">
<head>
...
<link rel="import" href="autobiographical-number.js">
...
</head>
<body>
<script>
var importedScriptElm = document.querySelector('link[rel="import"]'),
scriptText = scriptText.import.body.innerHTML;
document.currentScript.insertAdjacentHTML('afterend', "<pre>" + scriptText + "</pre>");
</script>
</body>
</html>
这仍然是实验性技术,是 web组件的一部分。进一步了解MDN
答案 4 :(得分:0)
您可以使用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 ...
});
}
}
答案 5 :(得分:0)
访问当前脚本的正确方法是document.scripts
(类似于HTMLCollection
的数组),最后一个元素始终是当前脚本,因为它们是按解析顺序进行处理并添加到该列表中的并执行。
var len = document.scripts.length;
console.log(document.scripts[len - 1].innerHTML);
唯一的警告是您不能使用任何会延迟代码执行的setTimeout或事件处理程序(因为可以在执行代码时解析并添加html中的下一个脚本)。