Match-id-ff7da73b1c97697d74f286c293358c5bf2790678
This commit is contained in:
commit
0759f07766
|
@ -16,7 +16,7 @@ const noop = (): void => {};
|
|||
// 兼容IE浏览器,无法修改Event属性
|
||||
export class WrappedEvent {
|
||||
customEventName: string;
|
||||
nativeEvent: Event;
|
||||
nativeEvent: AnyNativeEvent;
|
||||
nativeEventType: string;
|
||||
type: string;
|
||||
key: string;
|
||||
|
@ -25,12 +25,18 @@ export class WrappedEvent {
|
|||
stopPropagation: () => void;
|
||||
preventDefault: () => void;
|
||||
|
||||
// 适配Keyboard键盘事件该函数不能由合成事件调用
|
||||
getModifierState?: (keyArgs: string) => boolean;
|
||||
// 适配老版本事件api
|
||||
persist = noop;
|
||||
|
||||
constructor(customEventName: string, nativeEvtName: string, nativeEvent: AnyNativeEvent) {
|
||||
for (const name in nativeEvent) {
|
||||
this[name] = nativeEvent[name];
|
||||
if(name === 'getModifierState') {
|
||||
const keyBoardEvent = nativeEvent as KeyboardEvent;
|
||||
this.getModifierState = (keyArg) => keyBoardEvent.getModifierState(keyArg);
|
||||
}
|
||||
}
|
||||
// stopPropagation和preventDefault 必须通过Event实例调用
|
||||
this.stopPropagation = () => nativeEvent.stopPropagation();
|
||||
|
|
|
@ -146,5 +146,22 @@ describe('MouseEvent Test', () => {
|
|||
};
|
||||
test('mouseover', <div onMouseOver={onMouseOver} onMouseOverCapture={onMouseOverCapture} />);
|
||||
});
|
||||
|
||||
it('KeyboardEvent.getModifierState should not fail', () => {
|
||||
const input = Horizon.render(<input
|
||||
onMouseDown={(e) => {
|
||||
e.getModifierState('CapsLock');
|
||||
}}
|
||||
/>, container);
|
||||
const event = new MouseEvent('mousedown', {
|
||||
relatedTarget: null,
|
||||
bubbles: true,
|
||||
screenX: 1,
|
||||
});
|
||||
|
||||
expect(() => {
|
||||
input.dispatchEvent(event);
|
||||
}).not.toThrow();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue