cancel
Showing results for 
Search instead for 
Did you mean: 

When onExit() will be executed?

0 Kudos

Hi,

Documentation tells that onExit() calls by framework when view is destroyed.

Does any one know whether Controller's onExit() will be called either on page "refresh" OR closing browser tab.?

Thanks,

Srinath

Accepted Solutions (1)

Accepted Solutions (1)

0 Kudos

Ok.

Is there any way to distinguish between "refresh" and "tab close" of a Browser by using UI5 ?

Thanks,

Srinath

former_member227918
Active Contributor

yes, i think you can use navigation.type which will return you the navigation type, it will return 1 or 0 (not sure) on browser refresh.

check below code inside beforeunload function.

window.addEventListener("beforeunload", function (oEvt) {

if (oEvt.currentTarget.performance.navigation.type == 1){

alert("refresh called!");

}

});

OR

Store a cookie the first time visits the page, and you can check this key in beforeunload function whether your key is exists or not, if yes then browser refresh called.

Hope this help.

Regards,

Akhilesh

0 Kudos

Hi Akhilesh,

"navigation.type" for the first time refresh returning "0" and there onwards returning "1".

Thanks,

0 Kudos

Hi Akhilesh,

Got the solution for above issue, where we are getting "0" on refresh for the first time.

"For the first time the page was loaded by direct navigation. Then subsequent reloads will set '1' on refresh, because the page is now loaded by reloading."

Thank you so much!!!

By using '1' on refresh i will keep condition to not execute the code.

Thanks,

Srinath

former_member227918
Active Contributor
0 Kudos

good to hear your issue resolved !:)

Answers (3)

Answers (3)

karthikarjun
Active Contributor
0 Kudos

Hi- We can find this action on two places.

  1. While destroying running components, this call back will execute.
  2. While getting out from Launchpad App, onExit will execute
0 Kudos

Hi Karthik,

Thank you for your response.

0 Kudos

Hi Ulrich,

Thank you for response.

In our app we are not using Routing and it is a Customized UI5 app.

Challenge here is, in our app we are calling 'DestroySession' OData call to kill user session inside "beforeunload" method. 'DestroySession' should execute only Closing of the browser, not on Browser refresh. Unfortunately, "beforeunload" is being called on browser "refresh" also.

I tried to distinguish between "refresh" and "tab close", but no luck.

I tried modifying 'beforeunload' so as to prompt user with options "Leave/Stay", but am unable to get the event on which button user has clicked (Leave/Stay).

So, thought of shifting 'Destroying Session' OData call to onExit(). Trying to see when onExit() will be executed, either on 'refresh of the page' OR 'tab close'.

Thanks,

Srinath

0 Kudos

Unfortunately this cannot be achieved with onExit. It is only be used in the use cases described above.

0 Kudos

On the one hand you can configure to destroy navigational views at routing by configuring the clearTarget property.

Or in case you tear down an app, onExit will be executed as well. Examples could be the tear down of a Fiori app or the iTeardownMyUIComponent() function used at OPA5 testing.