或任何其他标签:)
例如。
<head>
<title>page...</title>
<script> var a = 'abc'; </script>
<script src="foo.js" type="text/javascript"></script>
</head>
<body>
...
<script src="foo2.js"></script>
</body>
(此字符串是来自ajax调用的响应)
我想获得一个包含3个字符串的数组:
<script> var a = 'abc'; </script>
<script src="foo.js" type="text/javascript"></script>
<script src="foo2.js"></script>
我该怎么做?
答案 0 :(得分:6)
定义:outerHTML函数(取自here)
jQuery.fn.outerHTML = function(s) {
return (s) ? this.before(s).remove() : jQuery("<p>").append(this.eq(0).clone()).html();
}
然后假设您的回复存储在您可以执行的data
中:
$(data).filter("script").each( function(e) {
// do something with $(e).outerHTML()
} );
答案 1 :(得分:1)
使用模式为<script[^<]*</script>
的正则表达式。
答案 2 :(得分:1)
您可以尝试以下内容:
function getScriptsAsText() {
var div = document.createElement('div');
var scripts = [];
var scriptNodes = document.getElementsByTagName('script');
for (var i=0, iLen=scriptNodes.length; i<iLen; i++) {
div.appendChild(scriptNodes[i].cloneNode(true));
scripts.push(div.innerHTML);
div.removeChild(div.firstChild);
}
return scripts;
}
它返回当前脚本元素的数组作为文本,包括它们的开始和结束标记。
您也可以尝试使用outerHTML,但它并没有受到广泛支持。