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