Всплывающие окна
Здравствуйте, ребята!
Есть такой скрип на сайте:
<script>
var newWin = window.open('$url',
'JSSite',
'width=880,height=550,resizable=yes,scrollbars=yes,status=yes')
newWin.focus()
</script>
Он открывает новое окно определенного размера, без него не как увы не обойтись, проблема в том, что браузер требует пользователя разрешения на открывания таких окон и как я заметил, не все пользователи видят это разрешение и получается, что окно не открывается и все летит к чертям.., пользователь думает, что сайт тупит (потому что после нажатия нечего не происходит), а на самом деле он не дал разрешения на это.. Вопрос: можно ли как-то обойти это? Ну то есть как-то автоматически ставить разрешения на открывания таких окон или сделать так, что разрешения вообще не требовалось... буду очень благодарен! Спасибо! |
Цитата:
Цитата:
<button id="button">Открыть окно</button>
<script>
button.onclick = function() {
var newWin = window.open('$url', 'JSSite',
'width=880,height=550,resizable=yes,scrollbars=yes,status=yes');
newWin.focus();
};
</script>
|
Цитата:
Да, осознаю... затупил я. Ваш вариант прекрасно работает (я его протестировал на отдельной странице у себя на сайте), но проблема в том, что у меня должно происходить все на ajaxe, то бишь человек нажимает на кнопку, php достает рандомный $url, а дальше как сделать перенаправление такого вида? Я делал так (понимаю, что это по нубски но все же): <?php echo "<script> var newWin = window.open('$url', 'JSSite', 'width=880,height=550,resizable=yes,scrollbars=yes ,status=yes'); newWin.focus(); </script>"; ?> То есть с php я вставлял скрипт в любой блок на сайте и получалось перенаправление с нужным параметром. |
Вот так все у меня выглядит:
html: <input id='like_put' type='submit' value='Случайный сайт'> <br><div class='error_reg_box'></div> js:
$(function(){
$('#information').on('click', '#like_put', function () {
$.ajax({
type: "POST",
url: "handlers/like_put",
cache: false,
success: function(response){
var messageResp = new Array('Ошибка, попробуйте перезайти на сайт..');
var resultStat = messageResp[Number(response)];
if(response == 0){
$(".error_reg_box").text(resultStat).show().delay(3500).slideToggle(1000);
}
else{
$(".error_reg_box").html(response);
}
}
});
return false;
});
});
php:
<?php
// Проверки разные...
// Если ошибки, то выводим "echo 1;" или другие ошибки...
// Потом достаем из БД рандомную запись, допустим:
$url = 'http://javascript.ru';
echo "<script>
var newWin = window.open('$url', 'JSSite',
'width=880,height=550,resizable=yes,scrollbars=yes,status=yes');
newWin.focus();
</script>";
exit();
}
?>
|
Попробовал даже перенаправить на конкретную страницу, все-равно запрос повляется:
(прописал его в js файле). var newWin = window.open('http://google.ru', 'JSSite', 'width=880,height=550,resizable=yes,scrollbars=yes ,status=yes'); newWin.focus(); |
Браузер блокирует окна, открываемые скриптом без действия пользователя. Открывай окно сразу по клику (выведи там чета типа "Загрузка", а по получению ответа от сервера - меняй его window.location
|
Цитата:
|
Цитата:
|
<button id="button" disabled="">Открыть окно</button>
<script>
(function(){
var url;
button.onclick = function() {
var newWin = window.open(url, 'JSSite',
'width=880,height=550,resizable=yes,scrollbars=yes,status=yes');
newWin.focus();
};
// имитируем xhr запрос.
setTimeout(function(){
url = 'https://google.com';
button.disabled = false;
}, 2000);
})()
</script>
|
| Часовой пояс GMT +3, время: 00:41. |