jQuery onload函数无法正常工作

时间:2014-11-07 15:17:59

标签: jquery

我有以下代码在点击时打开弹出窗口,点击功能正在运行,但弹出窗口不会在页面加载时加载。

<button id="popupBtn">Open Popup</button>

<script>
$("#popupBtn").on('click', openPopup);
$("body").on('load', openPopup);

function openPopup() {
   var left = ($(window).width()/2)-(800/2),
   top = ($(window).height()/2)-(300/2),
   pop = window.open('http://www.google.com', "popup", "width=800, height=300, top="+top+", left="+left);
 return false;
}
</script> 

我也尝试了

$("#popupBtn").on('click', openPopup);
//$("body").on('load', openPopup);

$( document ).ready(function() {
    openPopup();
});

修改1

另外,如何在页面加载时使用openPopup自动加载5秒延迟?会有类似下面的作品吗?

$( document ).ready(function() {
    openPopup().delay(5000);
});

2 个答案:

答案 0 :(得分:1)

大多数浏览器&#39;弹出窗口阻止程序不允许您在页面加载时打开弹出窗口,因为它的行为容易被滥用(并且一直是历史性的)。您只需要等到明确的用户操作,例如您已经挂钩的click

  

另外,如何在页面加载时使用openPopup自动加载5秒延迟?

您不能出于同样的原因:除了直接对用户操作的响应之外,您无法在大多数浏览器上打开弹出窗口(例如,期间< / em>事件的处理,而不是在[说] setTimeout之后。

对于这两个要求,您可能会考虑使用页内内容而不是弹出窗口,使用绝对定位的元素等。浏览器不会阻止您这样做,因为它们会停留在页面的范围内

答案 1 :(得分:0)

以下代码可以帮助您

$(document).ready(function () {
    function openPopup() {
                    var left = ($(window).width() / 2) - (800 / 2),
                        top = ($(window).height() / 2) - (300 / 2),
                        pop = setTimeout(
                                    function ()
                                    { window.open('http://www.google.com', "popup", "width=800, height=300, top=" + top + ", left=" + left) }
                                    , 5000);
                    return false;
    }

    $("#popupBtn").on('click', openPopup);
    $(window).on('load', openPopup);
});