code: function(eventType, listener) {
      var i, len, events, added = {};
      if (typeof eventType === "string" && eventType) {
        events = eventType.toLowerCase().split(/\s+/);
      } else if (typeof eventType === "object" && eventType && !("length" in eventType) && typeof listener === "undefined") {
        _keys(eventType).forEach(function(key) {
          var listener = eventType[key];
          if (typeof listener === "function") {
            ZeroClipboard.on(key, listener);
          }
        });
      }
      if (events && events.length && listener) {
        for (i = 0, len = events.length; i < len; i++) {
          eventType = events[i].replace(/^on/, "");
          added[eventType] = true;
          if (!_handlers[eventType]) {
            _handlers[eventType] = [];
          }
          _handlers[eventType].push(listener);
        }
        if (added.ready && _flashState.ready) {
          ZeroClipboard.emit({
            type: "ready"
          });
        }
        if (added.error) {
          if (!_isBrowserSupported()) {
            ZeroClipboard.emit({
              type: "error",
              name: "browser-unsupported"
            });
          }
          for (i = 0, len = _flashStateErrorNames.length; i < len; i++) {
            if (_flashState[_flashStateErrorNames[i].replace(/^flash-/, "")] === true) {
              ZeroClipboard.emit({
                type: "error",
                name: _flashStateErrorNames[i]
              });
              break;
            }
          }
          if (_zcSwfVersion !== undefined && ZeroClipboard.version !== _zcSwfVersion) {
            ZeroClipboard.emit({
              type: "error",
              name: "version-mismatch",
              jsVersion: ZeroClipboard.version,
              swfVersion: _zcSwfVersion
            });
          }
        }
      }
      return ZeroClipboard;
    }
docs: The underlying implementation of `ZeroClipboard.on`.
  @private