Жаль, конечно, что приходится извращаться.
Накатал вот такую функцию открытия окна методом POST, может кому-то будет полезна.
Правда пока не тестил в работе, может есть баги...
/*
Открытие нового окна и передача в него параметров методом POST
action - адрес
args - передаваемые аргументы, вида "a=111&b=222&c=333&..."
target - '_top', '_blank', или название окна. Если не указано, то '_blank'
*/
function OpenNewWinPost(action,args,target){
var new_el = function(el,name,value){
m_form_i = document.createElement('input');
m_form_i.setAttribute("type","hidden");
m_form_i.setAttribute("name",name);
m_form_i.setAttribute("value",value);
el.appendChild(m_form_i);
}
if(!target) target = '_blank';
var m_form = document.createElement('form');
// Без добавления а адрес случайной последовательности в Chrome и Safari
// переход по адресу происходит только один, первый раз
var r = new Date().getTime()+Math.random();
// Обработка адресов с # или ?
if(/\?/i.test(action)){
var tmp = new Array();
tmp = action.split('?');
if(/#/i.test(tmp[1])){
var tmp2 = new Array();
tmp2 = tmp[1].split('#');
action=tmp[0]+'?'+tmp2[0]+'&'+r+'#'+tmp2[1];
}else action=tmp[0]+'?'+tmp[1]+'&'+r;
}else{
if(/#/i.test(action)){
var tmp2 = new Array();
tmp2 = action.split('#');
action=tmp2[0]+'?'+r+'#'+tmp2[1];
}else action=action+'?'+r;
}
m_form.setAttribute("action",action);
m_form.setAttribute("method","POST");
m_form.setAttribute("target",target);
// разбор аргументов
var tmp = new Array();
var tmp2 = new Array();
if(args != '') {
tmp = args.split('&'); // разделяем переменные
for(var i=0; i < tmp.length; i++) {
tmp2 = tmp[i].split('='); // массив param будет содержать
new_el(m_form,tmp2[0],tmp2[1]);
}
}
// добавим на страницу
var body = document.getElementsByTagName('body')[0];
body.appendChild(m_form);
// переход
m_form.submit();
// и в конце удалим
body.removeChild(m_form);
}