Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Всплывающие окна (https://javascript.ru/forum/jquery/39349-vsplyvayushhie-okna.html)

Vladislav 26.06.2013 13:31

Всплывающие окна
 
Здравствуйте, ребята!
Есть такой скрип на сайте:

<script>
var newWin = window.open('$url',
'JSSite',
'width=880,height=550,resizable=yes,scrollbars=yes,status=yes')
            
newWin.focus()
</script>


Он открывает новое окно определенного размера, без него не как увы не обойтись, проблема в том, что браузер требует пользователя разрешения на открывания таких окон и как я заметил, не все пользователи видят это разрешение и получается, что окно не открывается и все летит к чертям.., пользователь думает, что сайт тупит (потому что после нажатия нечего не происходит), а на самом деле он не дал разрешения на это..


Вопрос: можно ли как-то обойти это? Ну то есть как-то автоматически ставить разрешения на открывания таких окон или сделать так, что разрешения вообще не требовалось... буду очень благодарен! Спасибо!

danik.js 26.06.2013 13:51

Цитата:

Сообщение от Vladislav
Ну то есть как-то автоматически ставить разрешения на открывания таких окон

А может попробуешь включить мозг? Ты думаешь разрешения создавались для того чтобы их можно было обходить?

Цитата:

Сообщение от Vladislav
сделать так, что разрешения вообще не требовалось

<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>

Vladislav 26.06.2013 15:56

Цитата:

Сообщение от danik.js (Сообщение 258593)
А может попробуешь включить мозг? Ты думаешь разрешения создавались для того чтобы их можно было обходить?


<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 я вставлял скрипт в любой блок на сайте и получалось перенаправление с нужным параметром.

Vladislav 26.06.2013 16:05

Вот так все у меня выглядит:

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();
}
?>

Vladislav 26.06.2013 16:20

Попробовал даже перенаправить на конкретную страницу, все-равно запрос повляется:
(прописал его в js файле).
var newWin = window.open('http://google.ru', 'JSSite',
'width=880,height=550,resizable=yes,scrollbars=yes ,status=yes');
newWin.focus();

danik.js 26.06.2013 17:48

Браузер блокирует окна, открываемые скриптом без действия пользователя. Открывай окно сразу по клику (выведи там чета типа "Загрузка", а по получению ответа от сервера - меняй его window.location

Vladislav 27.06.2013 00:08

Цитата:

Сообщение от danik.js (Сообщение 258644)
Браузер блокирует окна, открываемые скриптом без действия пользователя. Открывай окно сразу по клику (выведи там чета типа "Загрузка", а по получению ответа от сервера - меняй его window.location

Ясно, а если как-то в какой-то блок выводить переменную $url (аяксом), а потом скриптом из этого блока брать инфу и подставлять в перенаправление?

danik.js 27.06.2013 06:16

Цитата:

Сообщение от Vladislav
Ясно, а если как-то в какой-то блок выводить переменную $url

Какой еще блок? Если можешь сделать запрос заранее - то делай конечно заранее. Сохранишь свой урл в перменную, а при клике создашь окно с адресом, взятым из переменной.

danik.js 27.06.2013 06:24

<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, время: 07:35.