不懂你为什么没有成功,到少我这里测试是通过的 win2k server IE 6.0<span id=aa>asdfghjkl</span><br>
<input type=button value=click onclick=cc()>
<script language=javascript>
function cc()
{
document.all.aa.attachEvent("onclick",bb);
}
function bb()
{
alert("ok");
}
</script>
<input type=button value=click onclick=cc()>
<script language=javascript>
function cc()
{
document.all.aa.attachEvent("onclick",bb);
}
function bb()
{
alert("ok");
}
</script>
</body>
<script>
document.body.onload = "";
</script>如果没有alert改变就成功。
</body>
<script>
document.body.onload = Function("alert('changed')");
</script>
</body>
<script>function MyFunction(arg1,arg2)
{
alert(arg1+":"+arg2);
}var a="aa";
var b="bb";
document.body.attachEvent("onclick",GetTheFunction(a,b));
a="11";
b="22";MyFunction(a,b);function GetTheFunction(x,y)
{
return Proxy;
function Proxy()
{
return MyFunction(x,y);
}
}</script>
<input type=button value=click onclick=cc()>
<script language=javascript>
function cc()
{
document.all.aa.attachEvent("onclick",new Function("alert('ok')"));
}
</script>
<span id=aa>asdfghjkl</span><script language=javascript>
function document.all.aa.onclick()
{
alert("这已经是重新定义过后的函数!");
}
</script>
<button onclick="document.all.aa.onclick=cc" id=dd >dsf</button>
<script>
function bb(){alert("first");}
function cc(){alert("changed");}</script>
不过obj.onclick=Function("funcA(argA,argB)"))的方法通过测试为可用。Lostinet(迷失网络)的方法比较复杂,我还没有进行测试。但是我觉得document.body.attachEvent("onclick",GetTheFunction(a,b));这句有可能不行,因为带参数的我从来没有调试通过。
我想主要问题还是在这个Function上面吧,通过转换就可以正常使用了。
在调用带参数的函数的时候,可以用两种方法
1.使用obj.onclick=Function("funcA(argA,argB)"))的方法直接修改。2.使用setAttribute方法,obj.setAttribute("onclick",Function("funcA(argA,argB)"),0)。经过测试,attachEvent方法仍然不可用。还有待探讨。