Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.06.2013, 13:31
Кандидат Javascript-наук
Отправить личное сообщение для Vladislav Посмотреть профиль Найти все сообщения от Vladislav
 
Регистрация: 13.02.2013
Сообщений: 105

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

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


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


Вопрос: можно ли как-то обойти это? Ну то есть как-то автоматически ставить разрешения на открывания таких окон или сделать так, что разрешения вообще не требовалось... буду очень благодарен! Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 26.06.2013, 13:51
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от 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>
Ответить с цитированием
  #3 (permalink)  
Старый 26.06.2013, 15:56
Кандидат Javascript-наук
Отправить личное сообщение для Vladislav Посмотреть профиль Найти все сообщения от Vladislav
 
Регистрация: 13.02.2013
Сообщений: 105

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


<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 я вставлял скрипт в любой блок на сайте и получалось перенаправление с нужным параметром.
Ответить с цитированием
  #4 (permalink)  
Старый 26.06.2013, 16:05
Кандидат Javascript-наук
Отправить личное сообщение для Vladislav Посмотреть профиль Найти все сообщения от Vladislav
 
Регистрация: 13.02.2013
Сообщений: 105

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

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();
}
?>
Ответить с цитированием
  #5 (permalink)  
Старый 26.06.2013, 16:20
Кандидат Javascript-наук
Отправить личное сообщение для Vladislav Посмотреть профиль Найти все сообщения от Vladislav
 
Регистрация: 13.02.2013
Сообщений: 105

Попробовал даже перенаправить на конкретную страницу, все-равно запрос повляется:
(прописал его в js файле).
var newWin = window.open('http://google.ru', 'JSSite',
'width=880,height=550,resizable=yes,scrollbars=yes ,status=yes');
newWin.focus();
Ответить с цитированием
  #6 (permalink)  
Старый 26.06.2013, 17:48
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Браузер блокирует окна, открываемые скриптом без действия пользователя. Открывай окно сразу по клику (выведи там чета типа "Загрузка", а по получению ответа от сервера - меняй его window.location
Ответить с цитированием
  #7 (permalink)  
Старый 27.06.2013, 00:08
Кандидат Javascript-наук
Отправить личное сообщение для Vladislav Посмотреть профиль Найти все сообщения от Vladislav
 
Регистрация: 13.02.2013
Сообщений: 105

Сообщение от danik.js Посмотреть сообщение
Браузер блокирует окна, открываемые скриптом без действия пользователя. Открывай окно сразу по клику (выведи там чета типа "Загрузка", а по получению ответа от сервера - меняй его window.location
Ясно, а если как-то в какой-то блок выводить переменную $url (аяксом), а потом скриптом из этого блока брать инфу и подставлять в перенаправление?
Ответить с цитированием
  #8 (permalink)  
Старый 27.06.2013, 06:16
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Vladislav
Ясно, а если как-то в какой-то блок выводить переменную $url
Какой еще блок? Если можешь сделать запрос заранее - то делай конечно заранее. Сохранишь свой урл в перменную, а при клике создашь окно с адресом, взятым из переменной.
Ответить с цитированием
  #9 (permalink)  
Старый 27.06.2013, 06:24
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<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>
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всплывающие окна в контакте Михаил1 Элементы интерфейса 2 25.02.2012 22:26
Firefox 5. Перестали работать всплывающие окна mikel Общие вопросы Javascript 3 24.06.2011 13:36
Всплывающие окна cyberx Общие вопросы Javascript 0 09.02.2010 07:23
Всплывающие окна Major_Krieg Серверные языки и технологии 2 10.11.2009 15:21
Всплывающие окна Silа Общие вопросы Javascript 0 03.11.2009 12:56