HTML:
<button onclick="foo(event);">Test</button>
使用Javascript:
window.foo = function(event) {
console.log(JSON.stringify(event));
}
控制台结果:
{"isTrusted":true}
Chrome上正在发生这种情况。我还没有测试过其他浏览器。
答案 0 :(得分:3)
为什么某些属性不包含在JSON.stringify中有很多原因:
function
s,无法进行字符串化如果您需要包含额外数据,最好的办法是手动构建一个包含您想要包含的内容的新对象:
window.foo = function(event) {
console.log(JSON.stringify({keyCode: event.keyCode));
}
答案 1 :(得分:0)
事件本身充满了原型函数 - 它们被stringify隐藏(正如ForbesLindesay已经指出的那样)。
否则,在HTML标记中看到onclick并不常见(因为它会对您的代码产生非常严格的依赖性)。
大多数浏览器(IE7以外)也允许您在控制台内解压缩值 - 您可以在此处看到:http://jsfiddle.net/djf2nxwd/14/
document.getElementById('foo').onclick = (event) => {
console.log(JSON.stringify(event));
console.log(event);
};
这可能是你期望的行为。