var ev = ev || window.event;
document.documentElement.clientWidth || document.body.clientWidth;
var target = ev.srcElement || ev.target;

补充

补充:所谓"兼容性写法",是指同一段 JS 代码在不同浏览器(尤其 IE 与 W3C 标准浏览器)之间行为不一致时,通过回退方案保证正常运行:

  • 事件对象 :W3C 中事件对象作为参数传入回调;IE8 及以下绑定在 window.event 上。用 ev = ev || window.event 同时兼容。
  • 事件源 :W3C 用 event.target,IE 用 event.srcElement,用 target = ev.srcElement || ev.target 兼容。
  • 可视区宽度 :标准浏览器是 document.documentElement.clientWidth,怪异模式 / Quirks 下要用 document.body.clientWidth,二者或运算即可。
  • 阻止冒泡 / 默认行为 :W3C 用 stopPropagation / preventDefault,IE8 用 cancelBubble = true / returnValue = false。
  • 事件绑定 :标准 addEventListener、IE8 专属 attachEvent(现已极少需要兼容 IE8)。

现代项目通常借助 jQuery、babel-polyfill 等封装好兼容层,开发时不再直接写上述代码。

来源整理自:vue3js.cn 面试官系列