к сожалению, мы не можем контролировать пользователя, покидающего страницу, как хотелось бы некоторым. Как правило, это хорошая вещь, потому что это приводит к раздражающим сообщениям типа «Вы уверены, что не хотите сначала что-то покупать?».
Но прежде чем я доберусь до этого, я рассмотрю код, который у вас есть. Во-первых, в обоих случаях 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; }
});
});