>  기사  >  웹 프론트엔드  >  GWT js 플래시의 클립보드에 복사는 더 나은 호환성_javascript 기술로 복사를 구현합니다.

GWT js 플래시의 클립보드에 복사는 더 나은 호환성_javascript 기술로 복사를 구현합니다.

WBOY
WBOY원래의
2016-05-16 18:33:051244검색

하지만 플래시를 사용해서 복사할 수는 있습니다. 예를 들면 VeryCd입니다. 플래시인 "선택한 연결 복사" 버튼을 살펴보세요. 플래시의 보안 샌드박스에서는 콘텐츠를 클립보드로 복사하는 것을 제한하지 않는 것 같습니다

하지만 한계가 있습니다.

1 ZeroClipborad 직원에 따르면 이러한 플래시는 네트워크를 통해 로드되어야 합니다.

로컬 디스크에서는 제로 클립보드가 작동하지 않습니다


이것은 Adobe Flash Player의 보안 제한 사항입니다. 안타깝게도 JavaScript-to-Flash 인터페이스("ExternalInterface)를 사용하고 있기 때문입니다. ") 이는 실제 온라인에서만 작동합니다(페이지 URL이 "http://" 또는 "https://"으로 시작하는 경우). . 디스크의 로컬 파일에서는 실행되지 않습니다.

그러나 로컬 Flash Player 보안 설정을 편집하고 이를 허용할 수 있는 방법이 있습니다.

http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html

그리고 로컬 "ZeroClipboard.swf" 파일의 경로를 신뢰할 수 있는 파일 목록에 추가하거나 "모두 허용" 옵션을 사용해 보세요.


2 플래시는 복사 기능을 제공하지만 사용자는 클릭 한 번만 하면 됩니다. 이는 JavaScript에서 setText 함수를 통해 클립보드에 복사할 수 없다는 의미입니다. 대신 setText 함수를 호출한 후 사용자의 마우스가 플래시를 클릭합니다.

이 라이브러리는 Flash Player 10과 완벽하게 호환되므로 Flash 동영상 내의 사용자 클릭 이벤트에 의해 클립보드 복사 작업이 시작되어야 합니다.

플래시를 사용하여 파일을 업로드하는 swfupload와 동일한 문제가 있습니다.


ZeroClipboard를 사용하면 웹 콘텐츠를 클립보드에 복사할 수 있습니다. 하지만 ZeroClipboard에는 GWT 캡슐화 기능이 없습니다. 저희 프로젝트에서는 GWT를 사용하기 때문에 swfupload의 GWT 캡슐화 방법을 배우고 ZeroClipboard를 GWT에서 호출할 수 있는 형태로 캡슐화했습니다.

1 먼저 zeroclipboard.jar을 캡슐화합니다

2 프로젝트에서는 GXT 컨트롤 라이브러리를 사용하여 컨트롤과 긴밀하게 통합하기 위해 두 가지를 결합하는 ZClipboardBinder 클래스를 작성했습니다.

3 사용방법은 아래와 같습니다(Zeroclipboard_test.java)

코드를 복사하세요 코드는 다음과 같습니다

package zero.clipboard.test.client;
import java.util.Date;
import zero.clipboard.test.client.ZClipboardBinder.ClipboardListener
import com.extjs; gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.google.gwt.core.EntryPoint
com.google.gwt.user.client.ui.RootPanel;
/**
* 진입점 클래스는 onModuleLoad()를 정의합니다.
*/
공용 클래스 Zeroclipboard_test는 EntryPoint를 구현합니다. {
public void onModuleLoad() {
LayoutContainer c = new LayoutContainer();
c.setSize(400, 300);
Button btn = new Button("Copy Hello World")
// 컨트롤을 ZeroClipboard에 바인딩
// ZClipboardBinder.bind (btn, "Hello World");
ZClipboardBinder.bind(btn, new ClipboardListener() {
@Override
public String prepareCopy() {
return (new Date()).toString( );
}
});
c.add(btn)
RootPanel.get().add(c)
}


관련 다운로드는 첨부파일에 있습니다.

attachment.zip

결과보기


버튼을 클릭한 후 실제로 위의 플래시를 클릭한 후 결과를 확인하세요.


이제 여러 파일 업로드, 클립보드에 복사 등 JavaScript로 구현할 수 없는 의미 있는 기능이 많이 있다는 것을 알게 되었는데, 이는 모두 플래시를 통해 중개자이자 "곡선"으로 구현됩니다. 최종 HTML5를 모릅니다. 이러한 문제가 해결되었는지 여부에 대해 고민할 필요는 없습니다.
제로 클립보드 오픈소스 JavaScript 플래시 카피 라이브러리 클래스

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.