The problem is that reading from the clipboard is a great security threat and browsers are reluctant to let you do it.I have managed to access the clipboard both read/write through an event handler because a Ctrl+C, Ctrl+V is an explicit way for the browser to confirm that is is indeed a user desired action and not the action of an evil website page.
As Craig said maybe there is a way to relax browser security but I haven't done so I don't really know. Look at MDN: https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/read says tha firefox asks explicitely which is a scary user experience for end usres. That's all I know... On Wed, Nov 2, 2022 at 7:27 AM Pramod Patil <[email protected]> wrote: > Thanks Vassilis, Craig for your responses, as I mentioned I am a > beginner with these things, I would like to put exact flow in my > application, maybe then I may get some specific help, > 1. We have tool button- with name "Paste from excel" on click of it below > code gets called > protected Function pasteFromExcelFunction =new Function(){ > public void execute(){ > if(readOnly){ > return; > }// its false > try{ > > if(pasteFromExcelHelper.pasteDataIntoGrid(BaseEditorGridPanel.this, > getRecordDef())); > doAfterPaste(); > } > } > } > 2. public boolean pasteDataIntoGrid(BaseEditorGridPanel grid, > BaseGridRecordDef recordDef) > { > boolean pasteSuccessful=true; > String pastedText= readFromClipboard(); // this method calls the > javascript code like below in point 3 > //further code goes here > } > 3 .private String readFromClipboard (){ > return JavaScriptUtils.getClipboardData(); > } > 4. > public static native String getClipboardData()/*-{ > i*f($wnd.clipboardData && clipboardData.setData){* > *return $wnd.clipboardData.getData('Text');* > } > > So can you please suggest me the code change in above function point no.4 > which will enable paste support with modern browsers, I am aware I am > asking very specific things, but I have constraints that I am not able to > debug as remote server where gwt code deployed needs some configuration and > code is using old version of GWT > > Thanks. > > On Wed, Oct 26, 2022 at 6:20 AM Craig Mitchell <[email protected]> > wrote: > >> The doc.execCommand('copy'), while deprecated, still works. Eg: >> >> @UiField TextBox myTextBox; >> >> myTextBox.setFocus(true); >> myTextBox.selectAll(); >> boolean success = copyToClipboard(); >> >> private static native boolean copyToClipboard() /*-{ >> return $doc.execCommand('copy'); >> }-*/; >> >> If you run your site over HTTPS, the user grants permissions, and you >> jump though lots of hoops, you can also use >> the $wnd.clipboardData.readText() and $wnd.clipboardData.writeText(myText). >> >> On Saturday, 22 October 2022 at 8:10:57 pm UTC+11 [email protected] wrote: >> >>> Well it's the event "copy" as in my example. You need an eventHandler >>> and then the event is passed as argument to your handler. >>> >>> Hope that helps. >>> >>> On Thu, Oct 20, 2022 at 7:47 PM Pramod Patil <[email protected]> >>> wrote: >>> >>>> Thanks again, >>>> In below method - how to get "event " ? so as to use >>>> event.clipboard.setData("text/plain", data), if I can get event handle then >>>> I may achieve desired results. >>>> public static native String setClipboardData(String data)/*-{ >>>> >>>> if($wnd.clipboardData && clipboardData.setData){ >>>> return $wnd.clipboardData.setData('Text',Data); >>>> } >>>> } >>>> }- >>>> >>>> On Thu, Oct 20, 2022 at 5:17 PM Vassilis Virvilis <[email protected]> >>>> wrote: >>>> >>>>> I believe I did >>>>> >>>>> It's this snippet for copy >>>>> >>>>> event.clipboardData.setData("text/plain", data); >>>>> >>>>> On Thu, Oct 20, 2022 at 1:52 PM Pramod Patil <[email protected]> >>>>> wrote: >>>>> >>>>>> Thank you again, I understand security implications but objective is >>>>>> to make it work for Edge, I have control over native methods, >>>>>> getClipBoardata and setClipboardData(String data) which are native >>>>>> methods >>>>>> in java. The code which I have pasted above is working fine with IE >>>>>> browser, but not with modern browsers. So can you help me with the >>>>>> code/pointers which can replace above code and work for Edge,Chrome. >>>>>> Thanks. >>>>>> >>>>>> On Thursday, 20 October 2022 at 14:52:22 UTC+5:30 [email protected] >>>>>> wrote: >>>>>> >>>>>>> Well if I remember correctly it is not supposed to access the >>>>>>> clipboard directly because that would be a huge security issue. >>>>>>> >>>>>>> Consider the following scenario. You copy / paste your password for >>>>>>> your bank somewhere. Then you go to a random webpage. If the javascript >>>>>>> of >>>>>>> this webpage that runs on your computer/browser could access >>>>>>> (getClipboardData()) your clipboard your bank password would be >>>>>>> compromised. >>>>>>> >>>>>>> So you can only access the clipboard from inside an event handler >>>>>>> that handles the "copy" event aka Ctrl+C. >>>>>>> >>>>>>> The necessary details to access the data differ from IE and so I >>>>>>> have posted examples. >>>>>>> >>>>>>> I do not know why your code does not compile. I think native methods >>>>>>> are not checked so they tend to give NULL errors during runtime. If >>>>>>> that is >>>>>>> your case then caniuse is your friend. >>>>>>> >>>>>>> Vassilis >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Thu, Oct 20, 2022 at 11:12 AM Pramod Patil <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Hi Thanks for your response, >>>>>>>> on both front at GWT and Javascript I am at beginners level, will >>>>>>>> it be possible to have modification in below function, which will >>>>>>>> support copyclipboard functionality with Microsoft Edge. I tried >>>>>>>> navigator.clipboard.writeText() but code is not getting compiled. >>>>>>>> public static native String getClipboardData()/*-{ >>>>>>>> i*f($wnd.clipboardData && clipboardData.setData){* >>>>>>>> *return $wnd.clipboardData.getData('Text');* >>>>>>>> } >>>>>>>> >>>>>>>> On Thu, Oct 20, 2022 at 12:36 PM Vassilis Virvilis < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> For non IE browsers I have this: >>>>>>>>> >>>>>>>>> // attach event listeners >>>>>>>>> // copy - cut - paste handlers >>>>>>>>> ((Element) >>>>>>>>> Js.cast(getElement())).addEventListener("copy", copy_li); >>>>>>>>> ((Element) >>>>>>>>> Js.cast(getElement())).addEventListener("cut", cut_li); >>>>>>>>> ((Element) >>>>>>>>> Js.cast(getElement())).addEventListener("paste", paste_li); >>>>>>>>> >>>>>>>>> where (Element) is elemental2.dom.Element >>>>>>>>> >>>>>>>>> copy_li is something like this: >>>>>>>>> >>>>>>>>> final elemental2.dom.EventListener copy_li = new >>>>>>>>> elemental2.dom.EventListener() { >>>>>>>>> @Override >>>>>>>>> public void handleEvent(elemental2.dom.Event evt) { >>>>>>>>> final ClipboardEvent event = Js.cast(evt); >>>>>>>>> copy(event); >>>>>>>>> } >>>>>>>>> }; >>>>>>>>> >>>>>>>>> where ClipboardEvent is elemental2.dom.ClipboardEvent >>>>>>>>> >>>>>>>>> I need a copy function because I reuse it in the "Cut" >>>>>>>>> functionality also. >>>>>>>>> >>>>>>>>> and finally copy is something like this >>>>>>>>> >>>>>>>>> private void copy(ClipboardEvent event) { >>>>>>>>> if (!hasData()) { // <-- hasData() is your application >>>>>>>>> specific function >>>>>>>>> return; >>>>>>>>> } >>>>>>>>> >>>>>>>>> // do application stuff get/iterate and finally get the >>>>>>>>> data in a String form somehow... >>>>>>>>> final String data = getData(); // application specific >>>>>>>>> >>>>>>>>> event.clipboardData.setData("text/plain", data); >>>>>>>>> event.preventDefault(); >>>>>>>>> } >>>>>>>>> >>>>>>>>> Similarly the paste evenListener: >>>>>>>>> >>>>>>>>> final elemental2.dom.EventListener paste_li = new >>>>>>>>> elemental2.dom.EventListener() { >>>>>>>>> @Override >>>>>>>>> public void handleEvent(elemental2.dom.Event evt) { >>>>>>>>> final ClipboardEvent event = Js.cast(evt); >>>>>>>>> final String data = >>>>>>>>> event.clipboardData.getData("text/plain") >>>>>>>>> event.preventDefault(); >>>>>>>>> if (data == null) >>>>>>>>> return; >>>>>>>>> >>>>>>>>> // now you need somehow to propagate data to the >>>>>>>>> interesting parties (methods, classes etc) >>>>>>>>> // I am using the EventBus from GWT >>>>>>>>> getEventBus().fireEvent(new PasteEvent(data)); >>>>>>>>> } >>>>>>>>> }; >>>>>>>>> >>>>>>>>> Hope that helps >>>>>>>>> >>>>>>>>> Vassilis >>>>>>>>> >>>>>>>>> On Thu, Oct 20, 2022 at 9:18 AM Pramod Patil <[email protected]> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi All, >>>>>>>>>> In our GWT application we are using Java native method call for >>>>>>>>>> Copytoclipboard functionality. Please refer below code >>>>>>>>>> >>>>>>>>>> public static native String getClipboardData()/*-{ >>>>>>>>>> if($wnd.clipboardData && clipboardData.setData){ >>>>>>>>>> return $wnd.clipboardData.getData('Text'); >>>>>>>>>> } >>>>>>>>>> } >>>>>>>>>> }-*/ >>>>>>>>>> public static native String setClipboardData(String data)/*-{ >>>>>>>>>> if($wnd.clipboardData && clipboardData.setData){ >>>>>>>>>> return $wnd.clipboardData.setData('Text',Data); >>>>>>>>>> } >>>>>>>>>> } >>>>>>>>>> }-*/ >>>>>>>>>> >>>>>>>>>> So above code is working fine with IE browser but not working >>>>>>>>>> with modern browser. I know this is not GWT specific question, but I >>>>>>>>>> don't >>>>>>>>>> have much knowledge with Javascript, so anyone who knows Javascript, >>>>>>>>>> please >>>>>>>>>> help here. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>> Google Groups "GWT Users" group. >>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>>> send an email to [email protected]. >>>>>>>>>> To view this discussion on the web visit >>>>>>>>>> https://groups.google.com/d/msgid/google-web-toolkit/c7ebae01-b41f-440a-b4da-b6c1c91231e3n%40googlegroups.com >>>>>>>>>> <https://groups.google.com/d/msgid/google-web-toolkit/c7ebae01-b41f-440a-b4da-b6c1c91231e3n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>>>> . >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Vassilis Virvilis >>>>>>>>> >>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "GWT Users" group. >>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>> send an email to [email protected]. >>>>>>>>> To view this discussion on the web visit >>>>>>>>> https://groups.google.com/d/msgid/google-web-toolkit/CAKbOjEybr2Kr5hEZ12tKccfMMuR6QZGazTZuZqRHVMd0bKg3ZA%40mail.gmail.com >>>>>>>>> <https://groups.google.com/d/msgid/google-web-toolkit/CAKbOjEybr2Kr5hEZ12tKccfMMuR6QZGazTZuZqRHVMd0bKg3ZA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>>>>>> . >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Thanks and regards, >>>>>>>> Pramod Patil >>>>>>>> Contact +91-8975432800 <+91%2089754%2032800> >>>>>>>> >>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "GWT Users" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to [email protected]. >>>>>>>> >>>>>>> To view this discussion on the web visit >>>>>>>> https://groups.google.com/d/msgid/google-web-toolkit/CAAXS9-UatQ84dXiZeD7Q0TSXA9HT56UGZQLCzvZ4fFqbEoF23A%40mail.gmail.com >>>>>>>> <https://groups.google.com/d/msgid/google-web-toolkit/CAAXS9-UatQ84dXiZeD7Q0TSXA9HT56UGZQLCzvZ4fFqbEoF23A%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>>>>> . >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Vassilis Virvilis >>>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "GWT Users" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected]. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/google-web-toolkit/f7386ec6-494b-4754-94dd-cbfbb42e8f22n%40googlegroups.com >>>>>> <https://groups.google.com/d/msgid/google-web-toolkit/f7386ec6-494b-4754-94dd-cbfbb42e8f22n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>> >>>>> >>>>> -- >>>>> Vassilis Virvilis >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "GWT Users" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/google-web-toolkit/CAKbOjEzshqm%2Bs-SUOZuuqSSH-2AR_T9nmcZ9O%2BK7Lcxoy-_R-A%40mail.gmail.com >>>>> <https://groups.google.com/d/msgid/google-web-toolkit/CAKbOjEzshqm%2Bs-SUOZuuqSSH-2AR_T9nmcZ9O%2BK7Lcxoy-_R-A%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> >>>> >>>> -- >>>> Thanks and regards, >>>> Pramod Patil >>>> Contact +91-8975432800 <+91%2089754%2032800> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "GWT Users" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> >>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/google-web-toolkit/CAAXS9-VcTJkn5um-JvGQDjptot2E271GQeUD0ReE6LbKLhF0AQ%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/google-web-toolkit/CAAXS9-VcTJkn5um-JvGQDjptot2E271GQeUD0ReE6LbKLhF0AQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> >>> >>> -- >>> Vassilis Virvilis >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "GWT Users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/google-web-toolkit/ed7e91b1-8612-4d5a-a096-1a420191802an%40googlegroups.com >> <https://groups.google.com/d/msgid/google-web-toolkit/ed7e91b1-8612-4d5a-a096-1a420191802an%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > > > -- > Thanks and regards, > Pramod Patil > Contact +91-8975432800 > > -- > You received this message because you are subscribed to the Google Groups > "GWT Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/google-web-toolkit/CAAXS9-UUdtpVaBjSm_HHHZt%2BPXO%2Bx0HKRo2Aq6gppOg%2B_9Pagg%40mail.gmail.com > <https://groups.google.com/d/msgid/google-web-toolkit/CAAXS9-UUdtpVaBjSm_HHHZt%2BPXO%2Bx0HKRo2Aq6gppOg%2B_9Pagg%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- Vassilis Virvilis -- You received this message because you are subscribed to the Google Groups "GWT Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit/CAKbOjEwKAiLXF-BjUmK38zJ21n4whz2Kvi_JzsZpb9Jod1Assw%40mail.gmail.com.
