2017-11-02 15 views
0

현재 태그 정의 주소를 미리 정의 된 링크와 함께 복사하기 위해 javascript로 하드 코딩 된 함수로 작업하고 있습니다. 내가 만든 것은 입력 형식의 텍스트 요소를 만들고 복사하려는 값으로 값을 설정하는 것이지만 내가 원하는 방식대로 작동하지 않는다는 것을 알 수 있습니다. Ctrl + V를 누르면 두 번째 항목이 내 기기의 클립 보드에있는 최신 값에 붙여 넣어졌습니다. 숨겨진 입력 태그에서 작동하도록 execCommand ("Copy")를 만드는 방법은 무엇입니까?숨겨진 입력 태그에 대해 execCommand ("Copy")를 작동 시키십시오.

function shareFile() { 
     var hiddenItem = document.createElement("input"); 
     hiddenItem.type = "text"; 
     hiddenItem.setAttribute("style","display: none"); 
     hiddenItem.value = <?php echo (isset($_SERVER['HTTPS'])?"\"https://":"\"http://").$_SERVER['SERVER_NAME']."/filesystem/openfile.php?dir=\" + " ?> encodeURI(this.parentNode.parentNode.parentNode.getAttribute("r-directory")); 
     hiddenItem.select(); 
     console.log(hiddenItem.value); 
     document.execCommand("Copy"); 
     // location.href = "resources.php?smsg=The file's link has been successfully copied to your clipboard." <?php if (!empty($_GET['dir'])) echo " + \"&dir=".$_GET['dir']."\""?>; 
     return false; 

    } 

P.S. (함수는 IMG 태그의 온 클릭 속성에 불린다) 가능한 많은 jQuery를 사용하지 마십시오! 고맙습니다.

+0

당신은 할 수없는,에서'execCommand' 복사 내용 복사시 볼 수 _ 반드시 _ 요소 . 그래도 복사하기 직전에 일시적으로 유형 및/또는 가시성을 변경할 수 있습니다. 모든 스크립트가 실행되기 전에 페이지가 렌더링되지 않으므로 사용자는이 가시성 변경을 볼 수 없습니다. – Teemu

+0

setAttribute 스타일 표시 없음을 제거하고 this.appendChild를 추가했지만 여전히 작동하지 않습니다. 문자열을 복사 할 수있는 해결 방법이 있습니까? 숨겨진 경우에도 입력 값을 콘솔 로그에 보낼 수 있습니다. –

+0

[의도대로 작동하는 것으로 보입니다] (https://jsfiddle.net/bftfba6t/) ..? 페이지가 클라이언트에로드되기 전에 PHP 코드가 한 번만 실행됩니다. – Teemu

답변

0

execCommand 요소의 모든 부분에 추가 된 요소와 작동합니다.

코드는 document.querySelector("body").appendChild(hiddenItem);

이 부족하고 명령을 실행 한 후 숨길 수 있습니다 ->hiddenItem.setAttribute("style","display: none");

+0

알맞게 편집하겠습니다. –