# CustomEvent constructor

CustomEvent(String type, { bool canBubble: true, bool cancelable: true, Object detail })

## Implementation

    factory CustomEvent(String type,
        {bool canBubble: true, bool cancelable: true, Object detail}) {
      final CustomEvent e = document._createEvent('CustomEvent');

      e._dartDetail = detail;

      // Only try setting the detail if it's one of these types to avoid
      // first-chance exceptions. Can expand this list in the future as needed.
      if (detail is List || detail is Map || detail is String || detail is num) {
        try {
          detail = convertDartToNative_SerializedScriptValue(detail);
          e._initCustomEvent(type, canBubble, cancelable, detail);
        } catch (_) {
          e._initCustomEvent(type, canBubble, cancelable, null);
        }
      } else {
        e._initCustomEvent(type, canBubble, cancelable, null);
      }

      return e;
    }