26.06.2013, 13:31
|
Кандидат Javascript-наук
|
|
Регистрация: 13.02.2013
Сообщений: 105
|
|
Всплывающие окна
Здравствуйте, ребята!
Есть такой скрип на сайте:
<script>
var newWin = window.open('$url',
'JSSite',
'width=880,height=550,resizable=yes,scrollbars=yes,status=yes')
newWin.focus()
</script>
Он открывает новое окно определенного размера, без него не как увы не обойтись, проблема в том, что браузер требует пользователя разрешения на открывания таких окон и как я заметил, не все пользователи видят это разрешение и получается, что окно не открывается и все летит к чертям.., пользователь думает, что сайт тупит (потому что после нажатия нечего не происходит), а на самом деле он не дал разрешения на это..
Вопрос: можно ли как-то обойти это? Ну то есть как-то автоматически ставить разрешения на открывания таких окон или сделать так, что разрешения вообще не требовалось... буду очень благодарен! Спасибо!
|
|
26.06.2013, 13:51
|
|
Профессор
|
|
Регистрация: 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>
|
|
26.06.2013, 15:56
|
Кандидат Javascript-наук
|
|
Регистрация: 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 я вставлял скрипт в любой блок на сайте и получалось перенаправление с нужным параметром.
|
|
26.06.2013, 16:05
|
Кандидат Javascript-наук
|
|
Регистрация: 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();
}
?>
|
|
26.06.2013, 16:20
|
Кандидат Javascript-наук
|
|
Регистрация: 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();
|
|
26.06.2013, 17:48
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Браузер блокирует окна, открываемые скриптом без действия пользователя. Открывай окно сразу по клику (выведи там чета типа "Загрузка", а по получению ответа от сервера - меняй его window.location
|
|
27.06.2013, 00:08
|
Кандидат Javascript-наук
|
|
Регистрация: 13.02.2013
Сообщений: 105
|
|
Сообщение от danik.js
|
Браузер блокирует окна, открываемые скриптом без действия пользователя. Открывай окно сразу по клику (выведи там чета типа "Загрузка", а по получению ответа от сервера - меняй его window.location
|
Ясно, а если как-то в какой-то блок выводить переменную $url (аяксом), а потом скриптом из этого блока брать инфу и подставлять в перенаправление?
|
|
27.06.2013, 06:16
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Сообщение от Vladislav
|
Ясно, а если как-то в какой-то блок выводить переменную $url
|
Какой еще блок? Если можешь сделать запрос заранее - то делай конечно заранее. Сохранишь свой урл в перменную, а при клике создашь окно с адресом, взятым из переменной.
|
|
27.06.2013, 06:24
|
|
Профессор
|
|
Регистрация: 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>
|
|
|
|