Obtener Información del Clipboard

Puede darse el caso que necesitemos obtener algún texto de nuestro objeto Silverlight, que al ser muy grande, como puede ser el caso de una url, necesitemos generar un botón que nos copie en el Clipboard el texto que nosotros queramos.

Vamos a tener en cuenta que Internet Explorer no funciona de la misma manera que Firefox, por lo que tendremos que realizar una solución alternativa para este último.

Primero vamos a empezar con la solución para Internet Explorer

var clipboardData = (ScriptObject)HtmlPage.Window.GetProperty("clipboardData");
bool success = (bool)clipboardData.Invoke("setData", "text", textLink.Text);

 

Como vemos en el ejemplo de arriba tenemos que acceder primero al objeto clipboardData, que es el que nos permite manipular la información del Clipboard. Luego tenemos que invocar a la propiedad setData, asignándole al valor text el texto que queremos que se copie.

Como les había dicho anteriormente, para Firefox esta solución no sirve ya el objeto clipboardData siempre es null, por lo que hay que buscar una alternativa. Para ello, vamos a utilizar un swf que va copiar en el Clipboard el texto que nosotros queramos. El swf se encuentra dentro de syntaxhighlighter, que es una herramienta creada por Alex Gorbatchev.

var clipboardData = (ScriptObject)HtmlPage.Window.GetProperty("clipboardData");
bool success = (bool)clipboardData.Invoke("setData", "text", textLink.Text);
if (clipboardData != null)
{
    bool success = (bool)clipboardData.Invoke("setData", "text", textLink.Text);
}
else
{
    string ClipboardFlashMovie = "clipboard.swf";
    var elem = HtmlPage.Document.CreateElement("div");
    HtmlPage.Document.Body.AppendChild(elem);
    elem.SetProperty("innerHTML", "<embed src=\"" + ClipboardFlashMovie + 
                                 "\" " + "FlashVars=\"clipboard=" + safeText + 
                                 "\" width=\"0\" " + 
                                 "height=\"0\" type=\"application/x-shockwave-flash\"></embed>");}

Como vemos, si el objeto clipboardData nos da null, entonces recurrimos a crear un objeto swf pasándole como parámetro el texto que necesitamos.

Esta solución la podemos descargar desde syntaxhighlighter, donde descargaremos toda la herramienta y ahi mismo encontraremos el swf que nos permitirá utilizar en Clipboard en otros browsers que no sean Internet Explorer.

No Comments