2013-09-05 29 views
11

ZeroClipboard không hoạt động và nó không ném bất kỳ lỗi nào (bảng điều khiển javascript).ZeroClipboard: swf nạp, nhưng không hoạt động

Trang web được lưu trữ trên máy chủ web HTTPS chạy trên máy chủ cục bộ. Cả trang web và SWF đều được cung cấp qua HTTPS bởi cùng một máy chủ.

SWF được tải và định vị chính xác trên nút (với ID: testButton). Khi nhấp chuột phải vào nút, menu ngữ cảnh flash (Giới thiệu về Adobe Flash Player 11.7 ...) sẽ được hiển thị.

Tuy nhiên, không có sự kiện nào, thậm chí không "tải", bị kích hoạt.

Tôi đang khắc phục sự cố này cho hai ngày tháng và tôi không thể tìm thấy giải pháp.

Thông tin thêm:

  • ZeroClipboard phiên bản: v1.1.7, cũng đã cố gắng v1.2.0-beta.3, chỉnh sửa: Điều này cũng xảy ra với V1.3.1
  • Trình duyệt: Chromium 28 trên Mac OSX
  • Official test website đang làm việc

đây là mã của tôi:

var clip = new ZeroClipboard(document.getElementById("testButton"), { 
    moviePath: "media/zeroclipboard.swf" 
}); 
clip.on("dataRequested", function(client, args) { 
    client.setText("Copy me!"); 
}); 
clip.on("load", function(client) { 
    alert("movie is loaded"); 
}); 
clip.on("complete", function(client, args) { 
    alert("Copied text to clipboard: " + args.text); 
}); 
clip.on("mouseover", function(client) { 
    alert("mouse over"); 
}); 
clip.on("mouseout", function(client) { 
    alert("mouse out"); 
}); 
clip.on("mousedown", function(client) { 
    alert("mouse down"); 
}); 
clip.on("mouseup", function(client) { 
    alert("mouse up"); 
}); 
+0

Tôi gặp vấn đề tương tự. Tải SWF (tôi có thể thấy 200 trong công cụ dành cho nhà phát triển Chrome) nhưng 'tải' không bao giờ kích hoạt. –

Trả lời

6

Sau nhiều tháng cuối cùng tôi đã tìm thấy một giải pháp:

ZeroClipboard không hoạt động ngoài hộp trong môi trường CommonJS trong trình duyệt, ngay cả khi nó nói.

Việc sửa chữa cho điều đó được gán biến phạm vi mô-đun (ví dụ ZeroClipboard) cho các đối tượng cửa sổ toàn cầu:

ZeroClipboard = require("zeroclipboard"); 
window.ZeroClipboard = ZeroClipboard; 

Tôi tạo ra một báo cáo lỗi về vấn đề này: https://github.com/zeroclipboard/zeroclipboard/issues/332

+0

Nếu sửa chữa không hoạt động, hãy đảm bảo rằng 'window.require' tồn tại, ví dụ: bằng cách gán nó với 'window.require = require;' trong một trong các mô-đun của bạn. Hai bản sửa lỗi này rất xấu, nhưng chúng là giải pháp duy nhất vào lúc này. – squarebracket

1

Tôi không chắc chắn nếu điều này sẽ giúp ~ nhưng bạn đã thử thay đổi moviePath của bạn một chút? Như thế này:

{moviePath:"//YOURSERVER/path/ZeroClipboard.swf"} 

Tôi đã cố gắng sử dụng ZeroCLipboard trong cả tháng và phần lớn thời gian tôi thất bại bởi vì tôi có con đường sai lầm trong cách này hay cách khác ...

Chúc may mắn anyways ~

+2

Các swf được nạp đúng cách (có thể được nhìn thấy trong các công cụ phát triển của trình duyệt), nhưng sự kiện tải không cháy .. – squarebracket

0

Nếu bạn trích xuất dự án chính xác, file .SWF nằm ở đây:

moviePath: "../zeroclipboard.swf" 
+1

Tôi đã chuyển swf sang một thư mục khác. Các swf được nạp đúng cách (có thể được nhìn thấy trong các công cụ phát triển của trình duyệt), nhưng sự kiện tải không cháy. – squarebracket

0

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

return a+"ZeroClipboard.swf" 

tới:

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

Chỉ muốn chỉ ra cho bất kỳ ai khác tìm thấy câu hỏi này trước: ZeroClipboard không hoạt động khi xem tệp cục bộ tức là file://path/index.html.Điều này là do các chính sách bảo mật của Adobe chặn giao thức file://.

https://stackoverflow.com/a/9450359/710377

Nếu bạn đã sử dụng Node.js ở tất cả (thậm chí chỉ cần cho người quản lý gói), bạn có thể quay lên một máy chủ web cơ bản trên dòng lệnh để kiểm tra ZeroClipboard với npm install http-server -ghttp-server /path/ (giả định rằng công cụ npm đã có trên đường dẫn của bạn).

Các vấn đề liên quan