2

I need a help regards copy image to clipboard in website. The image is dynamically created one.

I found two solutions

Solution 1 :

using System.Windows.Forms;

Bitmap bitmapImage ;

protected void buttonClipboard_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
    MemoryStream memoryStream = new MemoryStream(imageByteArray);             // Image byte array is the input
    bitmapImage = (Bitmap)System.Drawing.Image.FromStream(memoryStream);
    memoryStream.Flush();
    memoryStream.Close();
    Thread cbThread = new Thread(new ThreadStart(CopyToClipboard));
    cbThread.ApartmentState = ApartmentState.STA;
    cbThread.Start();
    cbThread.Join();
}

[STAThread]
protected void CopyToClipboard()
{
    if (bitmapImage != null)
    {
        //Clipboard.SetData(DataFormats.Bitmap, bitmapImage);
        Clipboard.SetImage(bitmapImage);
    }
}

This is working fine before publishing the website. After publishing this won't work in any website browsers because here STAThread used. Some websites said thread won't work in published website due to internal multi-thread handling in browsers.

Solution 2 :

<script type="text/javascript">
        function CopyToClip() {
            var imgControl = document.getElementById('imageContent');
            imgControl.contentEditable = 'true';
            var controlRange;
            if (document.body.createControlRange) {
                controlRange = document.body.createControlRange();
                controlRange.addElement(imgControl);
                controlRange.execCommand('Copy');
            }
            imgControl.contentEditable = 'false';
            return true;
        }

This java-script working fine for IE before & after publishing website. But it is not working in Chrome & Mozilla in any situation.

I need one solution for Mozilla & Chrome.

Please suggest any solution for this?

4

2 に答える 2

0

IE は、このクリップボード操作方法をサポートする唯一のブラウザーです。クリップボードへの画像の配置をサポートするブラウザは他にありません。

テキストについては、クロスブラウザーのサポートを実現するために Flash ベースのソリューションを使用する必要があります。ZeroClipboardを試す ことができます。

Mozilla にはクリップボード ガイドがありますが、かなり低レベルであり、このドキュメントから判断すると、セキュリティ上の懸念からクリップボードを開くことにあまり熱心ではありません。特に、「Web サイトのクリップボード アクセスを有効にする」:

そのような機能は Firefox に組み込まれていません。

ただし、クリップボードの操作に関する興味深いW3C API 仕様があります。特に、このsetData方法はユースケースに有望なようです。This SO answerイベントの興味深いテストを提供しますonpasteが、残念ながらクリップボードのアイテムには何もなく、それらを取得するだけです。

于 2012-04-17T10:23:29.790 に答える
0

ユーザーが少なくとも 1 つの構成ファイルを編集しない限り、Firefox では実際には機能しません。

クロムでは、拡張機能を除いて無効になっています。

クロスブラウザーのクリップボード サポートが必要な場合は、悲しいことに、現時点ではフラッシュ ウィジェットが唯一の真に実行可能な方法です。

于 2012-04-17T10:14:51.313 に答える