Edge 的替代组合路径

xav*_*ier 3 javascript microsoft-edge

当我使用 Edge/IE 单击某处时,我希望能够检测到路径。对于所有其他浏览器,我可以使用event.composedPath(),但 Edge 和 IE 不支持它。

我一直在环顾四周,我只发现页面不鼓励使用path和使用composedPath(),但我没有找到任何关于 Edge 的参考。

请帮忙!

Dee*_*SFT 6

您可以尝试检查此 polyfill 可能有助于获得组合路径。

// Event.composedPath
(function(e, d, w) {
  if(!e.composedPath) {
    e.composedPath = function() {
      if (this.path) {
        return this.path;
      } 
    var target = this.target;

    this.path = [];
    while (target.parentNode !== null) {
      this.path.push(target);
      target = target.parentNode;
    }
    this.path.push(d, w);
    return this.path;
    }
  }
})(Event.prototype, document, window);
Run Code Online (Sandbox Code Playgroud)

像下面这样使用它:

var path = event.path || (event.composedPath && event.composedPath());
Run Code Online (Sandbox Code Playgroud)

参考:

(1) Firefox 和 Vue.js 未定义 event.path

(2) rockinghelvetica/composedpath.polyfill.js

除此之外,我没有任何替代方法或解决方法来为 IE 和 Edge 浏览器获取 Event.Composedpath。