del node (useCapture & avoid passive)

    @@ -1,9 +1,9 @@ /* - * @title del node + * @title del node (useCapture & avoid passive) * @description delete selected node just once * @include http://* * @include https://* - * @contributor unarist http://let.hatelabo.jp/unarist/let/hJmev5mP7YUV (Fork of) + * @contributor noromanba http://let.hatelabo.jp/noromanba/let/hLHWyeejvP4c (fork of) * @license MIT License http://opensource.org/licenses/MIT * @javascript_url */ @@ -11,16 +11,22 @@ (function() { 'use strict'; + // * In Chrome >= 55, passive:true is default for touchstart + // which prevents e.preventDefault(). + // * Some browsers will treat 'options' parameter as 'useCapture', + // but actually this script should catch the event sooner :p + const options = { passive: false, capture: true }; + function deleteOnce(e) { e.stopPropagation(); e.preventDefault(); e.target.parentNode.removeChild(e.target); - document.removeEventListener('click', deleteOnce); - document.removeEventListener('touchstart', deleteOnce); + document.removeEventListener('click', deleteOnce, options); + document.removeEventListener('touchstart', deleteOnce, options); } - document.addEventListener('click', deleteOnce); - document.addEventListener('touchstart', deleteOnce); -})(); - + + document.addEventListener('click', deleteOnce, options); + document.addEventListener('touchstart', deleteOnce, options); +})();
  • /*
     * @title del node (useCapture & avoid passive)
     * @description delete selected node just once
     * @include http://*
     * @include https://*
     * @contributor noromanba http://let.hatelabo.jp/noromanba/let/hLHWyeejvP4c (fork of)
     * @license MIT License http://opensource.org/licenses/MIT
     * @javascript_url
     */
    
    (function() {
      'use strict';
    
      // * In Chrome >= 55, passive:true is default for touchstart
      //   which prevents e.preventDefault().
      // * Some browsers will treat 'options' parameter as 'useCapture',
      //   but actually this script should catch the event sooner :p
      const options = { passive: false, capture: true };
      
      function deleteOnce(e) {
        e.stopPropagation();
        e.preventDefault();
    
        e.target.parentNode.removeChild(e.target);
    
        document.removeEventListener('click', deleteOnce, options);
        document.removeEventListener('touchstart', deleteOnce, options);
      }
      
      document.addEventListener('click', deleteOnce, options);
      document.addEventListener('touchstart', deleteOnce, options);
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2017/02/19 18:04:44 - 2017-02-19
  2. 2017/02/19 18:02:23 - 2017-02-19