在窗口关闭打开colorbox

时间:2011-08-26 06:38:26

标签: jquery jquery-plugins colorbox

我一直在研究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() { }});">

此代码在velocity中抛出语法异常。

这里的任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:1)

遗憾的是,我们对用户离开页面没有那么多的控制权。这通常是一件好事,因为它往往会导致诸如“你确定你不想先买东西吗?”这类烦人的消息。

但在我开始之前,我会解决你的代码问题。首先,在colorbox的两个实例化中,您都缺少“open:true”选项。无需点击即可打开彩盒,您将需要此选项。

我假设您在docReady中的代码意味着您希望在首次加载页面时打开colorbox。为此,请将代码更改为:

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

你在那里的代码是抛出语法错误的原因。 “parent”没有定义“fn”(如前所述,通常用于iframe)。 fn是Jquery的一个属性(它实际上只是原型的快捷方式)。另外,我遗漏了你的onLoad属性,因为它没有用于空函数的目的。

现在进入“onunload”,这里你应该使用“onbeforeunload”属性,因为那将是首先触发的属性。但是,我不认为你会对此感到满意,因为我们无法做到这一点。有关这方面的更多信息,这里有一个很好的答案:Answer to overriding 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; }
    });
});

答案 1 :(得分:0)

您发布的代码段可能是混音模式。使用 parent.fn.colorbox 通常是从iFramed子进行的,以引用回父窗口。该代码段未显示您的上下文,以确定是否正确使用。

您还应该注意哪个调用会生成错误,onDoc就绪或卸载。