20.01.2017, 14:58
|
Аспирант
|
|
Регистрация: 14.03.2014
Сообщений: 64
|
|
window.open внутри post
Всем доброго времени суток.
Пишу скрипт
$.post("/document/documentBase", {idDoc:idDoc, idCheck:idCheck}, function(data){
window.open('/document/downloadDocument/'+data, '_blank');
});
Вопрос, собственно всего один.
Почему window.open, не работает внутри post?
Ну и сразу, как можно открыть новое окно?
|
|
20.01.2017, 15:44
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,123
|
|
Сообщение от Officeoff.ru
|
Почему window.open, не работает внутри post?
|
Бивас, тест!
Создал файл tmp.csp
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
$.post(
"tmp1.csp",
{test: 'Test'},
function(data){
alert(data)
window.open('tmp2.csp?data='+data);
}
);
});
</script>
</head>
<body>
</body>
</html>
Создал файл tmp1.csp
Создал файл tmp2.csp
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<style type='text/css'>
</style>
<script type='text/javascript'>
</script>
</head>
<body>
<p>#($g(%request.Data("data",1),"Нет данных..."))#</p>
</body>
</html>
Запустил tmp.csp - таки все работает!
Окно открывается... Параметр читается...
|
|
20.01.2017, 16:29
|
Аспирант
|
|
Регистрация: 14.03.2014
Сообщений: 64
|
|
Так, ну оказывается у меня в других браузерах тоже работает.
Это яндекс браузер не открывает. Хотя похожий код, на другом событии срабатывает
|
|
20.01.2017, 17:11
|
Аспирант
|
|
Регистрация: 14.03.2014
Сообщений: 64
|
|
Кстати, если window.open вынести за пределы post, то работает.
В связи с этим вопрос, может быть можно сделать data видимой вне post и передать в window.open?
|
|
21.01.2017, 13:28
|
Аспирант
|
|
Регистрация: 14.03.2014
Сообщений: 64
|
|
Вопрос, так и остается открытым. Можно как-то решить проблему или как?
Думаю ключевой вопрос, сделать data видимой вне post
|
|
21.01.2017, 14:07
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Сообщение от Officeoff.ru
|
Это яндекс браузер не открывает.
|
Открой Консоль JavaScript (Ctrl + Shift + J) и покажи что там он пишет.
|
|
21.01.2017, 15:30
|
Аспирант
|
|
Регистрация: 14.03.2014
Сообщений: 64
|
|
Сообщение от Rise
|
Открой Консоль JavaScript (Ctrl + Shift + J) и покажи что там он пишет.
|
Да, собственно в том и проблема, что ничего.
Я могу внутри написать console.log(data), например, и тогда он выведет в консоли отобразится ответ. Но новое окно так и не появляется.
Если console.log не писать, то консоль будет пустой.
|
|
21.01.2017, 18:46
|
Аспирант
|
|
Регистрация: 14.03.2014
Сообщений: 64
|
|
Сообщение от Rise
|
Officeoff.ru, в яндекс браузере тоже работает, появляется значок в правой части адресной строки, просто нет сообщения о блокировке, поэтому его не так заметно, как в других браузерах, а так все браузеры по умолчанию блокируют всплывающие окна для разрешения пользователя.
Пример ksa на php:
tmp.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>tmp</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function () {
$.post('tmp1.php', { test: 'Test' }, function(data) {
alert(data);
window.open('tmp2.php?data=' + data);
});
});
</script>
</head>
<body>
</body>
</html>
tmp1.php
<?php echo 'Ok';
tmp2.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>tmp2</title>
</head>
<body>
<p><?php var_dump($_GET) ?></p>
</body>
</html>
|
Да, точно, я просто не увидел сообщение о блокировке. Интересно, как это вообще можно заметить...
Спасибо, большое за помощь.
|
|
21.01.2017, 18:47
|
Аспирант
|
|
Регистрация: 14.03.2014
Сообщений: 64
|
|
Хотя все равно остается вопрос. Почему, когда window.open вне post, то не блокируется?
|
|
21.01.2017, 19:12
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Officeoff.ru, значит есть разрешение пользователя.
|
|
|
|