Flows really are a ground breaking piece of technology.
It was evident last year at DF14 by how often there were talked about. More stuff is being added every release and there is a great big community of users!
UI based flows are awesome for internal user, just pop the URL into a button and instant awesome! A question that is constantly being asked is, how do I get the pop up window to go away”
See, when you launch the UI version of the flow, it does it’s merry little thing and then takes you back to the start, which is not always ideal! Being that we are all really clever folks in this community, there are a bunch of ways around this, but a lot of them require visualforce / apex or a URL hack…but not many of them actually address the needs I had:
- I need this to run with in a community
- I would like the window to close once the flow is completed
First things first, we need the flow to run in a community. According to page 115 of the Visual Workflow Guide:
“Enable external users to run your flow by adding the flow to a Visualforce page and distributing that page through a Force.com site, Customer Portal, or Partner Portal.”
OK, no big deal there. This topic has been covered extensively on this blog and others! As a side note, this is how you get flows playing nicely with Salesforce1, so head over here to learn more…I will wait!
Ah, you are back! Now that we have a flow that will run on communities or internally. How the heck do we get the flow to close out the window? Well, after googling various iterations of “closing visualforce window” I finally just decided to google something like “close browser window javascript” (This was after googling “Moscow Mule Recipes”).
I wish this just came from one source, but I was really using the google hive mind that day! What I ended up doing is using some javascript in a visualforce page called “ForceClose”:
<apex:page showChat=”false” showHeader=”false” sidebar=”false” applyBodyTag=”false” applyHtmlTag=”false”>
<html>
<head>
<title>ESCAPE</title>
<script>
function closeWindow() {
window.open(”,’_parent’,”);
window.close();
}
</script>
</head>
<body onload=”closeWindow()”></body>
</html>
</apex:page>
NOTE! If this code looks familiar to someone, please let me know so I can give you a hat tip from little corner of the web!
NOTE + 1! I still have my #ClicksNotCode card, so I would imagine this is not near good code!
Now I have a flow that runs in a Visualforce page AND a Visualforce page that should (in theory) close itself. It is time to…wait, I wish this step could be more dramatic…maybe you could read this in a monster truck voice? Just in your head so you are not disturbing your neighbor! OK, carry on…join the two pages together! Just set your finish location on your flow visualforce page to be the forceclose page!
And, that is that! So, how does it work? Well, pretty darn good! The super sweet thing though is that this is reusable! I now used the “ForceClose” page 5 or 6 times in various flows, and that is really nice!
As always, thanks for reading the SFDCinSEA blog! If you have any questions or comments, let me know!
This didn’t exactly work for me, but using your method and google magic, this worked:
ESCAPE
function winClose()
{
self.close();
}
Hi Sarah,
Thanks for dropping me a note!
I wished my method worked for you, but it is cool to know that something I wrote inspired someone to try something!
Andrew
ACK! with new lightning experience, the javascript appears not to be working to close windows.
Any thoughts on replicating this in VF without using a controller?
I recently encountered this during a salesforce hackathon event. Luckily, it is a pretty simple VF page 🙂
https://sfdcinsea.com/2016/12/21/you-know-who-likes-innovating-i-like-innovating/
Thanks for dropping by – let me know if you have any further questions!