我有以下代码在点击时打开弹出窗口,点击功能正在运行,但弹出窗口不会在页面加载时加载。
<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);
});
答案 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);
});