I want to direct a customer in an e-commerce site to pay via Paypal's website. I would like the payment to be done in a new tab/window so the customer doesn't lose the current state of the web page he/she is at.
In order for the Paypal window to open without getting blocked, I am using an anchor with target="_blank". Which is working perfectly except for the fact, I can't close it after Paypal payment is done since window.close()
doesn't work for windows that were not opened via window.open()
.
How do I make it so it is BOTH not blocked as a popup AND I am able to close it with JS later on?
Chrome® on AndroidTap the three dots in the upper right-hand corner and select Settings. Scroll down to the Advanced settings and select Site settings. Select Pop-ups and redirects. Toggle the switch on or off depending on your preferences.
To disable the pop-up blocker, uncheck the Blocked (recommended) box. To enable pop-ups on specific sites, check Blocked (recommended) and click Add next to Allow and enter the URL(s). CHROME (MAC) By default, Chrome will notify you when a pop-up is blocked and give you an option to see it.
Most popup blockers are triggered when a popup is launched indirectly from a user action. Some popup blockers are triggered when a user clicks, but most are not. Basically, if the popup is triggered within a click handler (or code that it calls), you are generally okay.
In order for the Paypal window to open without getting blocked, I am using an anchor with target="_blank".
That's one option, but as long as you call window.open
from within the handler for a user-generated event (like click
), you can open pop-up windows. So just make sure you call window.open
from within a click
handler on the link (and then you can close it). Modern pop-up blockers (anything from the last several years) block pop-ups that aren't triggered by a user event, but allow ones that are.
Live example | source:
HTML:
<p><a href="#" id="target">Click to open popup</a>; it will close automatically after five seconds.</p>
JavaScript:
(function() {
document.getElementById("target").onclick = function() {
var wnd = window.open("http://stackoverflow.com");
setTimeout(function() {
wnd.close();
}, 5000);
return false;
};
})();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With