Открытие colorbox при закрытии окна - PullRequest
1 голос
/ 26 августа 2011

Я работал над jQuery colorbox, я застрял в этом месте, где

Мне нужно открыть цветную коробку после закрытия браузера, я пробовал разные коды взяты из интернета но ничего не получилось, я помещаю пример кода который я попробовал pl проверить и предложить что нужно сделать.

Пример кода:

 <script type="text/javascript">
$(document).ready(function(){
parent.fn.colorbox({href:
'http://www.google.com',
iframe:true,width:'960px',height:'500px', onLoad: function() { }});
});
</script>
<body onunload="$.fn.colorbox({href:'http://www.google.com',
iframe:true,width:'960px',height:'500px', onLoad: function() { }});">

Этот код генерирует синтаксическое исключение в скорости.

Любая помощь здесь будет очень признательна.

Ответы [ 2 ]

1 голос
/ 12 сентября 2011

к сожалению, мы не можем контролировать пользователя, покидающего страницу, как хотелось бы некоторым. Как правило, это хорошая вещь, потому что это приводит к раздражающим сообщениям типа «Вы уверены, что не хотите сначала что-то покупать?».

Но прежде чем я доберусь до этого, я рассмотрю код, который у вас есть. Во-первых, в обоих случаях colorbox вам не хватает опции "open: true". Всякий раз, когда вы хотите открыть Colorbox без щелчка, вам понадобится эта опция.

Я предполагаю, что ваш код в docReady означает, что вы хотите, чтобы colorbox открывался при первой загрузке страницы. Для этого измените свой код на:

$(document).ready(function(){
    $.colorbox({href:'http://www.google.com', open: true, iframe:true,width:'960px',height:'500px'});
});

Код, который у вас был, был тем, что вызывало синтаксическую ошибку. «parent» не имеет определения «fn» (и, как упоминалось ранее, обычно используется в iframes). fn является свойством Jquery (и на самом деле это просто ярлык для прототипа). Кроме того, я пропустил ваше свойство onLoad, поскольку оно не имеет смысла с пустой функцией.

Теперь перейдем к «onunload», здесь вы должны использовать атрибут «onbeforeunload», так как он будет первым, который будет запускаться. Тем не менее, я не думаю, что вы будете удовлетворены этим, потому что мы не можем сделать с этим много. Для получения дополнительной информации об этом, есть отличный ответ здесь: Ответ на переопределение window.onbeforeunload . Быстрый ответ - поместить это где-нибудь в свой код JS:

window.onbeforeunload = function() {
    return "A string that will be ignored";
}

Если вы все еще предпочитаете вставлять его в HTML, это тоже работает:

<body onbeforeunload="return ''">

Это откроет браузер по умолчанию "Покинуть этот сайт?" Диалог. К сожалению, на данный момент не существует обходного пути для переопределения содержимого или функциональности этого диалога, поэтому я говорю, что мы не можем с этим ничего поделать. Вы можете открыть цветовую коробку за диалоговым окном, но она может даже не загрузиться полностью, и нет остановки браузера, если пользователь нажимает «да» в этот момент. И как примечание, это событие также запускается при обновлении страницы, а не только при переходе на новый сайт.

Если вы можете только наблюдать за кликами по внешним ссылкам, вы можете использовать что-то подобное в docReady, который откроет цветное окно, когда пользователь нажимает на любую ссылку, которая начинается с "http://" (в этом примере, Я использую опцию «html», но вы можете использовать опцию href с «iframe: true»):

$('a[href^="http://"]').click(function() {
    var href = $(this).attr("href");

    $(this).colorbox({
        html: "Thanks!",
        width: "50%",
        height: "50%",
        onClosed: function() { window.location = href; }
    });
});
0 голосов
/ 27 августа 2011

Фрагмент, который вы разместили, может быть режимами микширования.Использование parent.fn.colorbox обычно выполняется из дочернего элемента iFramed для обращения к родительскому окну.Фрагмент не показывает достаточно вашего контекста, чтобы увидеть, является ли это правильным использованием.

Вы также должны отметить, какой вызов вызывает ошибку, готовность onDoc или выгрузка.

...