You need to sign in to do that
Don't have an account?
Amphitrite
VF javascript to run actionfunction
I have some Javascript that should trigger an actionFunction method if user tries to close window or browser. However - it isn't actually running. Any ideas?
<script LANGUAGE="JavaScript1.2" TYPE="text/javascript">
var allowPrompt=true;
function unloadUserLock(){
IF(allowPrompt){
window.onbeforeunload = unloadPage;
}
}
function unloadPage()
{
unload();
}
function NoPrompt()
{
allowPrompt=false;
}
</script>
<script LANGUAGE="JavaScript1.2" TYPE="text/javascript">
var allowX=true;
function unloadpage(){
if(allowX){
unload();
}
else{
}
return null;
}
function setBunload(on){
window.onbeforeunload = unloadpage;
}
setBunload(true);
function clearX()
{
allowX = false;
}
</script>
All Answers
This is a security feature of modern browsers - if the user wants to leave the page you can't do much other than add a custom message to the confirmation dialog.
<script LANGUAGE="JavaScript1.2" TYPE="text/javascript">
var allowX=true;
function unloadpage(){
if(allowX){
unload();
}
else{
}
return null;
}
function setBunload(on){
window.onbeforeunload = unloadpage;
}
setBunload(true);
function clearX()
{
allowX = false;
}
</script>
here is complete vf page code:
<apex:page controller="jsTestClass" >
<script LANGUAGE="JavaScript1.2" TYPE="text/javascript">
var allowX=true;
function unloadpage(){
alert('allowX');
if(allowX){
doAction();
}
else{
}
return null;
}
function setBunload(on){
window.onbeforeunload = unloadpage;
}
setBunload(true);
function clearX()
{
allowX = false;
}
</script>
Where are you calling this setBunload method in vf page?
<apex:form >
<apex:actionFunction name="doAction" action="{!doAction}" rerender="MyPage" />
</apex:form>
</apex:page>