0

面白いことに、これはしばらくの間完全に機能し、突然停止しました。私の知る限り、変更はありません。おそらくブラウザのキャッシュです。とにかく私のzeroclipboardコード:

var $j = jQuery.noConflict();
ZeroClipboard.setMoviePath( 'ZeroClipboard.swf' );

$j('document').ready(function() 
{   
    var address = $j('#address').html();
    var clip = new ZeroClipboard.Client();  
    clip.setText( address );
    $j('#get_address_button').mouseover(function() {    
        clip.glue(this);
        clip.addEventListener( 'oncomplete', my_complete );     
    }); 

    function my_complete( client ) {
        alert('The Bitcoin Address: '+address+' has been copied to your clipboard' );   
    }

});

そして私のhtml:

<div id="address" style="display: none"><?php _e($address) ?></div>
<div style="border:1px solid grey; text-align:center; padding:5px; overflow: auto;">    
    <b><?php echo $message ?></b>
    <img src="<?php _e(WP_PLUGIN_URL) ?>/bitcoin-donations-plugin/images/bitcoin_logo<?php _e($image) ?>.png" alt="image here"/>        
    <div style="position:relative; width:100%;">
        <div style="float:left; width:92px; height:40px; background-image:url(<?php _e(WP_PLUGIN_URL) ?>/bitcoin-donations-plugin/images/button.png);""><a href="http://www.weusecoins.com/">What is<br>Bitcoin?</a></div>
        <div style="float:right; width:92px; height:40px; background-image:url(<?php _e(WP_PLUGIN_URL) ?>/bitcoin-donations-plugin/images/button.png);" id="get_address_button">Get My<br>Bitcoin Address</div>
    </div>
</div>

すべて正常に動作しますが、zeroclipboard が接着剤の上に作成する目に見えないフラッシュ ボタン (これ); div は、あるべき場所の約 25px 北に配置されます。何か案は?

4

5 に答える 5

3

ここでも同じですが、swf はパディングによってどこかに押し下げられていたので、しばらくしてからハックしました。ZeroClipboard.js で、次のように座標を変更します。

 getDOMObjectPosition: function(obj, stopObj) {
        // get absolute coordinates for dom element
        var info = {
            left: 0, 
            top: 0, 
            width: obj.width ? obj.width : obj.offsetWidth, 
            height: obj.height ? obj.height : obj.offsetHeight
        };
于 2013-01-19T22:44:47.230 に答える
2

ソリューション:

ドキュメントや他のスクリプトを読んだ後にコードを入れてください!

ページには、アコーディオンや展開可能なメニューなど、ページの読み込み中にサイズを縮小する要素を含めることができます。

SWF はトップの値で埋め込まれていますが、ページの読み込みが終了すると、他の要素の位置が変更されます。あなたのフラッシュは、すべてのイベントの後にそれを考慮する必要があります

コード:

$(document).ready(function() {
       var clip = new ZeroClipboard.Client();
       clip.setText( 'Copy me!' );
       clip.setHandCursor( true );
       clip.glue( 'd_clip_button' );
});
于 2012-02-27T21:51:55.647 に答える
1

同様の問題がありました。私が実際にやったこと(自分自身を引き締める)は、.swfをjavascriptで移動することでした。それはひどく汚く、私は誇りに思っていませんが、この問題は私をここで正気の限界に追いやった.

誰かがハッキング以外の解決策を持っている場合、私はすべて耳にします。

于 2011-09-08T13:40:41.960 に答える
1

一種のハックですが、私にとってはうまくいきます。基本的にタイマーと遅延を使用して、ページ上のすべてが「解決」したことを確認してから、フラッシュ要素をボタンと同じ絶対位置に手動で移動します。JQuery が必要です。

ZeroClipboard.js ファイルで、flash div が作成されている行を見つけます。

this.div = document.createElement('div');

次の行を追加します。

this.div.id = 'zeroclip_flash';

これで、flash 要素を含む div を id で操作できるようになりました。

他のすべての ZeroClipboard 開始処理の後に、次の行を追加します。

setTimeout(function() {
    $('#zeroclip_flash').offset( $('#copy').offset() );
}, 500);

'clip' は、グルー ターゲット要素の ID です。

私が言ったように、これはハックですが、Chrome を使用している私には他に何もうまくいかないようです。

于 2013-11-14T23:45:05.897 に答える
1

他の回答では明示的に呼び出されていないため、言及する価値があります。配置に影響を与える可能性のあるCSSルール(div要素セレクターを使用するなど)がないことを確認してください(パディングまたはmargin) は、swf オブジェクトが含まれる div の

于 2013-09-08T19:45:15.653 に答える