2017-11-28 13 views
0

실행 취소 다시 실행 기능을 사용하는 Electron 기반 응용 프로그램을 만들고 싶습니다. 이제 메뉴에 실행 취소/다시 실행 항목을 넣을 수 있으며 역할에 따라 이미 전자에 있습니다. role: undo + role: redo. 보이는 바와 같이 herewebContents.undo()의 전자는 무엇입니까?

그래서 내가 이미 알게 된 것은 아마 '실행 취소'-MenuItem을 클릭하면 webContents.undo()이 호출된다는 것입니다.

지금 내 질문에이 실행 취소가 호출 될 때 정확히 무엇이 발생합니까? 어떻게 든 리스너를 등록하고 직접 실행 취소 할 수 있습니까? 아니면 '실행 취소'역할을 사용하지 않고 사용자 정의 메뉴 항목을 정의하고 모든 것을 직접 처리하는 것이 가장 좋습니다.

아마도 전자 크롬 브라우저가 이러한 실행 취소 이벤트를 처리하는 방법과이를 catch하고 실행 취소/다시 실행에서 발생해야하는 내 자신의 동작을 정의 할 수있는 방법에 대한 사양이있을 수 있습니다.

답변

1

사용자 정의 메뉴 항목을 정의하고 직접 처리해야한다고 생각합니다.

webContents 설명서에 이벤트가 없기 때문에 리스너를 등록하고 처리 할 수 ​​있다고 생각하지 않습니다.

{ 
    label:  'Undo', 
    accelerator: 'CmdOrCtrl+Z', 
    click:  function (menuItem, focusedWin) { 
     // Undo. 
     focusedWin.webContents.undo(); 

     // Run some custom code. 
    } 
} 
+0

내가 실행 취소 이벤트를 처리하는 텍스트 영역 /의 contentEditable에 전달되는 방식에 여전히 관심이 :

메뉴 항목은 다음과 같이 될 것이다. 아니면 전혀? 나는 왜 그런 역할이 있는지 혼란 스럽지만 아무 쓸모가 없다. – patsimm

+0

나는 textarea/contenteditable에 어떻게 전달되었는지 모르겠지만 어떤 종류의 코드를 실행 취소해야 하는가? – Mike

+0

그래서 나는 진짜 문제입니다, 나는 자신이 구현 한 실행 취소/다시 실행을 사용해야하는 하나의 contenteditable을 가지고 있습니다. 다른 요소는 표준 브라우저 구현을 사용할 수 있습니다. 그러나 contenteditable을 포함한 모든 요소는 키보드 단축키를 청취해야합니다 (이것은 문제가되지 않습니다). 또한 MenuItem을 클릭하는 것입니다. 문제가 시작됩니다. 어디에서나 표준 구현을 사용할 수도 있고 모든 것을 직접 실행 취소/다시 실행 할 수도 있습니다. Theres 믹스를 할 수있는 방법은 없습니다 ... – patsimm