I have some custom long JS code that is too long to post, basically when user clicks a button on my site, it is creating a custom <form>, and submits it as POST request in a new tab that gets opened.
I want to modify it to open in the same tab. The relevant line of code is:
w = window.open("",'myPop_Window' + wId);
And I’ve tried changing it to:
w = window.open("",'myPopup_Window' + wId, "_self");
But it didn’t work.
I hope this is enough info to figure how can I modify the line to open in same tab.
EDIT:
more code of form creation:
var tryOpenTab2 = function(button,tab_url,tab_url_data_g) {
var data = {};
var form = button.parents('form').first();
if (form.length > 0)
data = getFormData(form);
if (tab_url_data_g) {
data['g'] = tab_url_data_g
}
if (!tab_url)
return;
var form = $('<form></form>');
form.attr('method', 'POST');
form.attr('action', tab_url);
for (var k in data) {
var input = $('<input />');
input.attr('type', 'hidden');
input.attr('name', k);
input.attr('value', data[k]);
form.append(input);
}
$('body').append(form);
if (w && !w.closed) {
//w.close();// client want to always open new tab
w = null;
}
wId = ''+new Date().getTime();
w = window.open("",'myPopup_Window' + wId);
form.attr('target', 'myPopup_Window' + wId);
}
EDIT 2:
How shoudl I used wId in new code?
if (button.is(button_class3)) {
w = window.open(window.location.href.split('#')[0] + "#" + button.attr("data-popup-id"));
} else {
wId = ''+new Date().getTime();
if( (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))) {
// w = window.open("",'myPopup_Window' + wId); old line
w = window.open("","_self") // new line 1
form.attr('target', '_self'); // new line 2
}
else { // non mobile agent - use blank
w = window.open('about:blank','myPopup_Window' + wId);
form.attr('target', 'myPopup_Window' + wId);
}
Advertisement
Answer
I suspect you can remove tryOpenTab2 from the submitting process and just have the form submit as normal without a target
Else try this
Change
if (w && !w.closed) {
//w.close();// client want to always open new tab
w = null;
}
wId = ''+new Date().getTime();
w = window.open("",'myPopup_Window' + wId);
form.attr('target', 'myPopup_Window' + wId);
to
form.attr('target', '_self');