2014-10-21 1 views
0

클립 보드로 복사하려고하는데 왜 만들 수 없는지 모르겠습니다. 내 페이지를 ajax로로드하므로 버튼을 클릭 할 때 zclip을 내 버튼에 추가하는 함수를 호출합니다. 그러나 그것을 클릭하면 아무 일도 일어나지 않습니다. JS :zClip이 작동하지 않습니다 - 클립 보드에 여러 복사본이 있습니다. JS

<script type="text/javascript" src="<?php echo JS_DIR?>zclip.min.js"></script> 
<script type="text/javascript"> 
    function mouseOver(){ 
     $('.copyMails').each(function (k,n) { 
      console.log("test"); 
      var copyMails = $(this); 
      $(this).zclip({ 
       path: '<?php echo JS_DIR?>ZeroClipboard.swf', 
       copy: function() { 
        var val = $(copyMails).attr('data-clipboard-text'); 
        return val; 
       }, 
       afterCopy: function() { console.log($(copyMails).data('clipboard-text') + " was copied to clipboard"); } 
      }); 
     }); 
    } 
</script> 

그리고 내 버튼 : 사전에

<button onmouseover="mouseOver()" data-clipboard-text="<?php echo implode(',', $emails); ?>" class="copyMails" title="Copier les adresses emails"> 
    Copier les adresses emails 
</button> 

감사 다음은 내 코드입니다.

+0

정확히 무엇이 문제입니까? 콘솔에서 오류가 발생합니까 아니면 위에 마우스를 올리면 버튼을 클릭 할 수 없습니까? –

+0

@GeorgeKormaris 콘솔에 오류가 없습니다. 버튼 위에있을 때 테스트 로그를 얻을 수 있지만 클릭하면 zclip이 아무 것도하지 않고 아무 것도 클릭하지 않을 때 – Splinteer

답변

0

적어도 제공된 내용으로는 예제에 오류가 있습니다. 당신의 mouseOver 기능이 정의되지 않았다고 피들에서 시험해 보겠습니다.

버튼을 클릭 할 때 데이터를 클립 보드로 복사하고 mouseover 이벤트가 트리거되면 클립 보드를 설정하겠습니까? 그렇다면 최선의 방법은 버튼 하나에 이벤트를 위임하여 단일 이벤트를 만드는 것입니다. 이렇게하면 선택기와 일치하는 모든 요소에 대해 요소가 겹쳐 질 때마다 클립 보드 플러그인을 계속 구성하지 않습니다.

다음은 코드의 예입니다. SWF 경로를 바이올린의 외부 리소스로 포함하여 완전히 작동하지는 않는다고 생각합니다. 그래서 나는 가까운 느낌의 코드 버전을 작성했습니다. 시도해주세요.

JSFiddle가 : http://jsfiddle.net/adx93ave/3/

$(function() { 
    $(document).on("mouseover", ".copyMails", function (evt) { 
     var $btn = $(this); 
     $btn.zclip({ 
      path: 'http://www.steamdev.com/zclip/js/ZeroClipboard.swf', 
      copy: $btn.data("clipboard-text"), 
      afterCopy: function() { 
        console.log($btn.data('clipboard-text') + " was copied to clipboard"); 
      } 
     }); 
    }); 
    }); 
+0

도움을 주셔서 감사합니다. 하지만 여전히 작동하지 않습니다. 나는 서버에서 swf의 내부 버전을 사용한다. 하지만 버튼을 클릭해도 아무런 변화가 없습니다. – Splinteer

+0

표준 디버깅을 시작하여 얼마나 멀리 있는지, 무엇이 호출되는지 등을 알아 내야합니다. 'mouseover' 이벤트가 시작 되었습니까? $ btn' 변수가 jQuery 인스턴스입니까? Chrome을 사용하여 소스에 중단 점을 추가하고 호출에 실패한 것을 판별하십시오. –

1

나는 이것이 내 서버에서 작동하도록 얻을 수 없었다, 나는 zclips 웹 사이트에서 ZeroClipboard.swf을 다운로드하여 작동하지 않을 것입니다. zclips 웹 사이트에서 swf가 예제로 사용하는 SWF가 아니라는 것을 알았습니다. 그래서 http://www.steamdev.com/zclip/js/ZeroClipboard.swf에 대한 하이퍼 링크를 만들고 "링크를 다른 이름으로 저장"을 클릭하여 크기를 원래 다운로드 한 크기와 비교해 보았습니다. 그래서 위의 링크에서 새 서버를 내 서버에 올려 놓았고 완벽하게 작동했습니다.

zclips 웹 사이트에서 다운로드 링크를 통해 직접 swf 파일을 다운로드 한 경우 이것이 내 문제였습니다. 내 링크를 파일로 저장 한 다음 서버에 업로드 해보십시오.

+0

사람들이 왜 투표하지 않는지 정말로 모릅니다. 우수 답변! 고마워요! – haotang

관련 문제