2010-09-18 30 views
7
ZeroClipboard.setMoviePath("/zeroclipboard/ZeroClipboard.swf"); 
var clip = new ZeroClipboard.Client(); 
clip.setText($('textarea#download_me').text()); 
clip.glue('clip'); 

Tôi đang sử dụng plugin ZeroClipboard phổ biến để sao chép nội dung vào khay nhớ tạm của người dùng. Nó hoạt động hoàn hảo trong enviornment dev cũng như trên domain1.com nhưng không phải trên domain2.com với chính xác các tập tin và cài đặt giống nhau!ZeroClipboard SWF không tải

/zeroclipboard/ZeroClipboard.js tải.

/zeroclipboard/ZeroClipboard.swf KHÔNG tải!

Tôi đã thử mọi thứ nhưng không thể làm cho nó hoạt động. Tôi thực sự bối rối tại sao nó hoạt động trên domain1 nhưng không phải trên domain2 ??

Làm cách nào để giải quyết vấn đề này?

Rất cám ơn sự giúp đỡ của bạn!

+0

bạn có thể thử tải (đường dẫn đầy đủ) – Dezigo

+0

ZeroClipboard.setMoviePath ("domain2.com/js/zeroclipboard/ZeroClipboard.swf"); – Dezigo

+0

Nếu nó hoạt động .. - đó là vấn đề với đường dẫn. – Dezigo

Trả lời

2

Nếu tệp này nằm trong cùng một thư mục với trang web của bạn, thì nó sẽ hoạt động ra khỏi hộp. Tuy nhiên, nếu tệp SWF được lưu trữ ở nơi khác, bạn cần phải đặt URL như thế này (đặt mã này sau thẻ tập lệnh):

ZeroClipboard.setMoviePath('http://YOURSERVER/path/ZeroClipboard.swf'); 

Để sử dụng tính năng HTML phong phú mới có sẵn trong Zero Clipboard 1.0.7, bạn phải đặt đường dẫn phim thành tệp "ZeroClipboard10.swf" mới, được bao gồm trong kho lưu trữ 1.0.7. Ví dụ:

ZeroClipboard.setMoviePath('ZeroClipboard10.swf'); 

Hoặc, ở một vị trí tùy chỉnh khác hơn là thư mục hiện hành:

ZeroClipboard.setMoviePath('http://YOURSERVER/path/ZeroClipboard10.swf'); 
+0

Đã thử bằng cách sử dụng 'ZeroClipboard10.swf' vẫn không hoạt động. Thật kì lạ, tôi đã kiểm tra lại các đường dẫn và mọi thứ nhưng vẫn không hoạt động trên miền1, nhưng hoạt động tốt trên domain2! – 3zzy

+0

Tôi thấy mình gặp sự cố khi tôi đã đổi tên tệp. – Rimian

0

Có thể muốn thử Fiddler để xem chính xác yêu cầu/phản hồi trông như thế nào đối với tệp.

2

Có những lựa chọn đối với tài sản tên miền chéo:

// SWF inbound scripting policy: page domains that the SWF should trust. (single string or array of strings) 
    trustedDomains: [window.location.host], 

Xem: https://github.com/zeroclipboard/zeroclipboard/blob/master/docs/instructions.md

Ngoài ra: Các bậc thầy chi nhánh hiện tại (2.x) ghi lại lĩnh chéo để an ủi nếu bạn thiết lập debug là true trong cấu hình.

Tôi đã có một số thành công khi sử dụng phiên bản được lưu trữ trên CDN của tệp swf. Nhưng sau khi thực hiện một số chỉnh sửa này bí mật ngừng làm việc tại địa phương nhưng đã làm việc trên máy chủ dàn dựng của tôi.

Đây là cấu hình của tôi:

ZeroClipboard.config({ 
    moviePath: '//cdnjs.cloudflare.com/ajax/libs/zeroclipboard/1.3.2/ZeroClipboard.swf', 
    forceHandCursor: true, 
    debug: true 
    }); 

Xem thêm jsfiddle này:
http://jsfiddle.net/rimian/45Nnv/

Nếu bạn vẫn gặp sự cố, bạn có thể đăng nhập từ swf để an ủi. Đối với điều này, bạn cần để có thể biên dịch đèn flash, từ zeroclipboard source thành một swf sử dụng grunt mxmlc.Đơn giản chỉ cần cử một sự kiện ghi trong kịch bản hành động (biên dịch và sao chép nó vào dự án của bạn) và đáp ứng với nó trong js của bạn:

Ví dụ, trong ZeroClipboard.as:

// constructor, setup event listeners and external interfaces 
public function ZeroClipboard() { 

    ... 

    // Get the flashvars 
    var flashvars:Object = LoaderInfo(this.root.loaderInfo).parameters; 

    dispatch("log", flashvars); 

    ... 

    } 

Sau đó, trong js của bạn:

zeroclipboard = new ZeroClipboard($('.mybuttons')) 
zeroclipboard.on('log', function(client, args) { console.log('log:', args)}); 
0

tôi giải quyết chỉnh sửa dòng này trên ZeroClipboard.min.js

return a+"ZeroClipboard.swf" 

để:

return "//YOUR/PATH/TO/ZeroClipboard.swf" 
0

Đặt cả moviePath và swfPath làm việc cho tôi.

ZeroClipboard.config({ moviePath: '/assets/ZeroClipboard.swf', swfPath: '/assets/ZeroClipboard.swf', debug: true }); 
Các vấn đề liên quan