刚才问题描述不清除,现在重新开一个帖子
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<li onclick="需要解答的地方">test</li>
<TABLE id="tab">
<script>alert(2)</script> //利用onclick事件读取这里的内容,并反编码,执行弹窗“2”
</TABLE>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<li onclick="需要解答的地方">test</li>
<TABLE id="tab">
<script>alert(2)</script> //利用onclick事件读取这里的内容,并反编码,执行弹窗“2”
</TABLE>
</BODY>
</HTML>
<ul>
<li onclick="eval(document.getElementById('tab').innerHTML)">test</li>
</ul>
<TABLE><tr><td id="tab">alert(2)</td></tr></TABLE>
//合适你过分的要求,只能在IE下运行
<ul>
<li onclick="eval(tab.innerHTML)">test</li>
</ul>
<TABLE><tr><td id="tab">alert(2)</td></tr></TABLE>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
function change(){
var p=document.getElementById("tab");
var a=p.innerHTML;
var m=a.replace("<script>","","g").replace("</script>","","g");
eval(m);
}
</script>
</head><body>
<li onclick="change()">test</li>
<div id="tab">
<script>alert(2)</script> //利用onclick事件读取这里的内容,并反编码,执行弹窗“2”
</div>
</body>
</html>
这样试试
function unescapeHTML(str){
var div = document.createElement('div');
div.innerHTML = str.replace(/<[^>]+>/gi,"");
return div.childNodes[0].nodeValue;
};
function execScript(){
var str=document.getElementById('tab').innerHTML;
var arr=unescapeHTML(str).match(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/gi);
for(var i=0;i<arr.length;i++){
eval(arr[i].replace(/^<script.*?>/,"").replace(/<\/script>$/,""))
}
}
</script>
<input type="button" value="执行脚本" onclick="execScript()" />
<TABLE><tr><td id="tab"><script>alert(2)</script><script>alert(3)</script></td></tr></TABLE>