사용자가 elm 0.18에서 버튼을 클릭 할 때 div에서 클립 보드로 텍스트를 복사 할 수 있습니까?elm : 클립 보드에 텍스트 복사
나는 Clipboard.elm을 보았지만 컴파일 할 수없고 elm 0.18에서 작동하지 않습니다. elm 0.18에서 이것을 수행하는 공식적인 작업 방법이 있습니까? 대상 브라우저가 지원하는 경우
사용자가 elm 0.18에서 버튼을 클릭 할 때 div에서 클립 보드로 텍스트를 복사 할 수 있습니까?elm : 클립 보드에 텍스트 복사
나는 Clipboard.elm을 보았지만 컴파일 할 수없고 elm 0.18에서 작동하지 않습니다. elm 0.18에서 이것을 수행하는 공식적인 작업 방법이 있습니까? 대상 브라우저가 지원하는 경우
, 다음 예를 들어, 포트를 통해 그것을 할 수 있습니다 :
느릅 나무 :
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');
});
이 솔루션은 Firefox 41+에서 작동하지 않습니다. 복사 명령. 자세한 내용은 https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand#Browser_compatibility를 참조하십시오. 느릅 나무 런타임을 잘 이해하고있는 누군가는 아마도 이벤트 사이클에서 콜백이 호출되지 않는 이유를 설명 할 수 있습니다 ... –
이 매우 몇 가지 라이브러리를 그 js는 게시 할 수 없으므로 랩핑합니다. 따라서 포트를 사용하고 싶을 것입니다. 이 경우에는 한 방향 (js로)의 통신 만 필요하기 때문에 꽤 똑바로 될 것입니다. 더 쉬운 비트입니다 –