Опять я, всем привет еще раз. Извиняюсь, если пишу не в тот раздел (переместите в нужный, пожалуйста), но я не могу решить свою проблему уже неделю. По этому предлагаю 10$ (в знак благодарности) тому, кто ее решит, понимаю что это не много, но все же на форуме решаются тысячи задач совершенно бесплатно, что, кстати, очень круто! (оплата по веб-мани или банковский перевод на карту).
Что имеем:
Представим, что мы рекламируем сайты. На странице 10 заказов/сайтов (описание, фото..), у каждого есть скрытое поле id (номер заказа) и скрытое поле url (ссылка на сайт этого заказа).
С низу, под каждым заказом, есть кнопка "перейти на сайт".
Чего нужно добиться:
При клике на кнопку "перейти на сайт" ajax'ом передаем php файлу id заказа (из скрытого поля) и там проверяем кое-какие данные. И если все хорошо,
то нужно в сплывающем окне открыть сайт, таким образом, чтобы не появлялось предупреждение "всплывающее окно заблокировано".
Что у меня НЕ получается:
НЕ получается только обойти разрешение. Оно всегда появляется, если пользователь зашел с нового браузера, где этого разрешения он еще не получал.
А все остальное работает, то есть все проверки, все-все-все работает... только вот это разрешение меня напрягает!
Обойти это разрешение у меня получалось только если пользователь напрямую нажал на кнопку и !!без всяких проверок!! 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>
Но мне нужно сделать с проверкой! А там увы браузер блокирует всплывающие окна.
Материалы:
html: (таких блоков у меня 10)
<div class='group_block' id='group_block'>
<input type='hidden' value='$id' id='id_group' name='id_group'>
<input type='hidden' value='$url' id='url_group' name='url_group'>
<div class='group_price'>$price</div>
<div class='group_photo'><img src='$photo' width='90px' height='90px' title='$name'></div>
<div class='group_button' id='group_button'>Перейти на сайт</div>
</div>
<div class='error_reg_box' style='display: none'></div> // текст ошибки сюда заносится
js:
$(function(){
$('#groups_block_wrap').on('click', '#group_button', function () {
var form = $(this).closest('#group_block');
var id_group = form.find("#id_group").val();
$.ajax({
type: "POST",
url: "handlers/group_put",
data: {"id_group": id_group},
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 if(response == 1){
$(".error_reg_box").text(resultStat).show().delay(3500).slideToggle(1000);
}
............ // другие ошибки.
else {
form.css("display", "none");
$(".error_reg_box").html(response); // С помощью этой строки я вставляю в html документ из php обработчика скрипт, который открывает окно. (смотрите далее)
}
php:
<?php
session_start();
include '../blocks/db.php';
include '../handlers/group_points_person.php';
if (!empty($_POST['id_group'])) $id_group = $_POST['id_group'];
if (isset($_POST['vip'])) $vip = $_POST['vip'];
$id = $_SESSION['id'];
if(empty($id)){
echo 0;
exit();
}
elseif(empty($id_group)){
echo 1;
exit();
}
............ // другие проверки...
// с помощью id (который мы получили из скрытого поля html) мы из БД достаем url записи и заносим ее в переменную.
$url = 'test'; // вот сюда ее заносим
echo "<script>
var newWin = window.open('$url', // и тут делаем перенаправление именно на нее
'JSSite',
'width=880,height=550,resizable=yes,scrollbars=yes,status=yes')
newWin.focus()
</script>"; // вот этот код я вставляю в html документ и происходит перенаправление...
exit();
}
?>
В принципе все... Все работает, только вот всплывающие окна блокирует браузер. как добиться того, чтобы этого не происходило.
В тексте я предоставил свой вариант, возможно, у Вас будет другой, главное чтобы работало!