代码之家  ›  专栏  ›  技术社区  ›  Aero Wang

如何删除文档[“oncontextmenu”]和文档[“onselectstart”]?

  •  1
  • Aero Wang  · 技术社区  · 6 年前

    document.oncontextmenu = function(){return false;};
    document.onselectstart = function(){return false;};
    

    如何使用注入的javascript删除它们?

    removeEventListener 似乎不起作用,因为没有事件名称。

    1 回复  |  直到 6 年前
        1
  •  1
  •   CertainPerformance    6 年前

    on- 属性,则只需重新分配该属性:

    document.oncontextmenu = null;
    document.onselectstart = null;
    

    但这些听众通常是通过 addEventListener 而不是通过 在- 转让。如果是那样的话,你可能会喜欢monkeypatch 附加侦听器 之前 页面加载时只允许附加您希望允许附加的侦听器。例如:

    const nativeListener = document.addEventListener;
    document.addEventListener = (...args) => {
      const type = args[0];
      if (type === 'selectstart' || type === 'contextmenu') return;
      nativeListener.apply(document, args);
    }
    
    // left click listener works normally
    document.addEventListener('click', () => console.log('click'));
    
    // right click listener is never attached:
    document.addEventListener('contextmenu', () => console.log('contextmenu'));
    <div>content</div>

    如果要在userscript中使用此选项,请确保使用

    // @run-at    document-start
    

    之前