第n次火星了,可是依然没去过火星.
这个是最近用到才知道,需求是替换onclick属性中的关键字,但是俺单纯的以为geAttribute都会返回一个字符串给我,没想到ie又一次显示了它独到的见解~
<html> <p id="test" onclick="alert('click');">click me~</p> <script> document.write('<pre' + '>'); var el = document.getElementById('test'); var at = el.getAttribute('onclick'); document.writeln(at); document.writeln(typeof at); document.write('</' + 'pre>'); </script> </html>
ff下输出
alert('click');
string
ie6和ie7下输出:
function anonymous()
{
alert('click');
}
function
ie8下输出:
function onclick()
{
alert('click');
}
function
其他事件属性肯定也会有同样表现,ie8十分搞笑,换了一个函数名…
最后对于ie我只有这样了:
<html> <p id="test" onclick="alert('click');">click me~</p> <script> var el = document.getElementById('test'); var at = el.getAttribute('onclick'); //函数换成字符串 at = at.toString().replace(/^function (anonymous|onclick)\(\)\n\{\n(.*)\n\}$/m, '$2'); //替换关键词 at = at.replace('click', 'wahaha'); //再变成函数放回去 el.setAttribute('onclick', new Function(at)); </script> </html>
