2016-12-09 4 views
3

사용자가 elm 0.18에서 버튼을 클릭 할 때 div에서 클립 보드로 텍스트를 복사 할 수 있습니까?elm : 클립 보드에 텍스트 복사

나는 Clipboard.elm을 보았지만 컴파일 할 수없고 elm 0.18에서 작동하지 않습니다. elm 0.18에서 이것을 수행하는 공식적인 작업 방법이 있습니까? 대상 브라우저가 지원하는 경우

+0

이 매우 몇 가지 라이브러리를 그 js는 게시 할 수 없으므로 랩핑합니다. 따라서 포트를 사용하고 싶을 것입니다. 이 경우에는 한 방향 (js로)의 통신 만 필요하기 때문에 꽤 똑바로 될 것입니다. 더 쉬운 비트입니다 –

답변

3

, 다음 예를 들어, 포트를 통해 그것을 할 수 있습니다 :

느릅 나무 :

type Msg = Copy 

update : Msg -> Model -> (Model, Cmd Msg) 
update msg model = 
    case Debug.log "msg" msg of 
    Copy -> (model, copy()) 

port copy :() -> Cmd msg 

-- VIEW 
view : Model -> Html Msg 
view model = 
    div [] 
    [ Html.input [ id "copy" ] [] 
    , Html.button [ onClick Copy ] [ text "copy" ] 
    ] 

자바 스크립트 :

const app = Elm.Main.fullscreen(); 
app.ports.copy.subscribe(() => { 
    console.log('copy'); 
    document.querySelector('#copy').select(); 
    document.execCommand('copy'); 
}); 
+0

이 솔루션은 Firefox 41+에서 작동하지 않습니다. 복사 명령. 자세한 내용은 https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand#Browser_compatibility를 참조하십시오. 느릅 나무 런타임을 잘 이해하고있는 누군가는 아마도 이벤트 사이클에서 콜백이 호출되지 않는 이유를 설명 할 수 있습니다 ... –