0

Hi,
On copy event, i need to display confirm dialog (we use fancybox dialogs in all project) and depending on user choice add some text (reference) to the copied text or leave the text as it is.
And the problem is that - when dialog appears copy function continues to go further and don't wait till confirmation.
Is there a way to pause the event and then continue? I know i can stop event e.preventDefault();. Maybe there is some way to manualy invoke copy event and pass modified text as selection?

$("body").bind ('beforecopy', function (e) { 
    if (typeof window.getSelection == "undefined") return; 
    var body_element = document.getElementsByTagName('body')[0];
    selection = window.getSelection();
    if (("" + selection).length < 50) return;
    fancyConfirm(function(ret){
        if (ret==true) { 
            restOfTheCode(body_element); //function that adds the text
        }
    });
});

FancyBox confirmation dialog.

function fancyConfirm(callback) {
    var ret = false;
    var content =
        '<div class="popup_form">'+
        '<div class="naismessage"><p>Copy with reference?</p><br>'+
        ' <input type="button" class="button small left" id="fancyConfirm_ok" value="Yes">'+
        ' <input type="button" class="button small" id="fancyConfirm_cancel" value="No">'+
        '</div></div>'
    ;
    $.fancybox(
        content,
        {
            openSpeed   : 'fast',
            closeSpeed  : 'fast',
            minWidth: '50',
            minHeight: '50',
            title: null,
            beforeShow: function () {
                $("#fancyConfirm_cancel").click(function() {
                    ret = false;
                    $.fancybox.close();
                });
                $("#fancyConfirm_ok").click(function() {
                    ret = true;
                    $.fancybox.close();
                });
            },
            afterClose : function() {
                if (typeof callback == 'function'){
                    callback.call(this, ret);
                }
            }
        }
    );
}

For adding refernce i use: Click Here

2
Contributors
1
Reply
10
Views
3 Years
Discussion Span
Last Post by Troy III
0

You'll need a true Modal Dialog for that; which is either a builtin browser Confirm Dialog, or the customizable showModalDialog() command.

jQuery uses fake Dialogs;
Which are in fact no dialogs at all, or if we cut some slack, they are at best, no more than Modeless imitations of app Dialogs.

Unable to halt the script execution and wait for confirmatin value.

Edited by Troy III

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.