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

我使用流行的ZeroClipboard插件將內容複製到用戶的剪貼板。它完全適用於開發環境,以及在domain1.com上,但在domain2.com上完全相同的文件和設置!ZeroClipboard SWF不加載

/zeroclipboard/ZeroClipboard.js加載。

/zeroclipboard/ZeroClipboard.swf無法加載!

我試過一切,但不能得到它的工作。我真的很困惑,爲什麼它在domain1上工作,但不在domain2上?

我該如何解決這個問題?

非常感謝您的幫助!

+0

你可以嘗試加載(完整路徑) – Dezigo 2010-09-18 12:49:31

+0

ZeroClipboard.setMoviePath( 「domain2.com/js/zeroclipboard/ZeroClipboard.swf」); – Dezigo 2010-09-18 12:49:53

+0

如果它正在工作.. - 它是一個路徑問題。 – Dezigo 2010-09-18 12:50:44

回答

2

如果此文件位於與您的網頁相同的目錄中,那麼它將開箱即用。但是,如果SWF文件在其他地方託管,你需要這樣設置URL(script標籤後將此代碼):

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

利用現有的新的Rich HTML功能在零剪貼板1.0.7,您必須將電影路徑設置爲包含在1.0.7存檔中的新「ZeroClipboard10.swf」文件。例如:

ZeroClipboard.setMoviePath('ZeroClipboard10.swf'); 

或者,在比當前目錄以外的自定義位置:

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

嘗試使用'ZeroClipboard10.swf'仍然不起作用。它太奇怪了,我仔細檢查了路徑和一切,但它仍然不能在domain1上工作,但在domain2上運行良好! – 3zzy 2010-09-24 06:40:38

+0

我發現我有問題,當我重命名文件。 – Rimian 2014-02-27 23:47:31

0

可能想嘗試Fiddler以準確查看文件的請求/響應的樣子。

2

有跨域資產選擇:

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

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

另外:當前的主分支(2.X)記錄的交叉領域,如果你設置調試到真正的安慰在配置中。

我使用cdf託管版本的swf文件取得了一些成功。但是在做了一些編輯之後,這個神祕地停止在本地工作,但在我的登臺服務器上工作。

這是我的配置:

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

也看到這個的jsfiddle:
http://jsfiddle.net/rimian/45Nnv/

如果您仍然遇到問題,您可以登錄從SWF安慰。爲此,您需要能夠使用grunt mxmlc將閃存從zeroclipboard source編譯爲swf。簡單地派遣在動作腳本日誌事件(編譯並將其複製到你的項目),並在您的JS對此作出迴應:

例如,在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); 

    ... 

    } 
在你的js

然後:

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

我解決了上編輯ZeroClipboard.min.js

return a+"ZeroClipboard.swf" 

這行:

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

設置moviePath和swfPath都適用於我。

ZeroClipboard.config({ moviePath: '/assets/ZeroClipboard.swf', swfPath: '/assets/ZeroClipboard.swf', debug: true });