jQuery - 没有Click的触发器弹出窗口

时间:2010-01-15 00:09:52

标签: php jquery

我在页面的body标签上方有这个 -

<script type="text/javascript">
    $(document).ready(function() {
        $('#button').popupWindow({windowURL:'http://something',centerBrowser:1,width:400,height:300}); 
    });
</script>   

有没有办法在没有用户实际点击按钮的情况下使弹出窗口发生 - 在页面加载时使用php以编程方式将代码插入到页面中间?

6 个答案:

答案 0 :(得分:2)

接下来添加以下内容。

$("#button").trigger("click");

或者把它全部放在链接线上:

$('#button').popupWindow({...options...}).trigger("click");

对于它的价值,您可以从非渲染元素中调用它:

$("<div></div>").popupWindow({..options..}).click();

答案 1 :(得分:1)

我认为出于安全原因,如果没有某种用户操作,许多浏览器都无法打开弹出窗口。

答案 2 :(得分:0)

popupWindow是硬编码的,可以处理链接,只响应“点击”事件。也就是说,如果你想让弹出窗口显示在页面加载上,你可以尝试从中编辑jquery.popupWindow的第6行;

$(this).click(function(){

到此;

$(this).ready(function(){

为你的身体元素添加一个id;

<body id="popuptrigger">

并调用插件;

$('body#popuptrigger').popupWindow({ ... });

这是未经测试的,但即使它有效,它也不是一个非常优雅的解决方案。我建议寻找一个弹出式插件,让你更灵活。我使用jqModal加载弹出窗体的内部网址请求,并可以完全推荐它。你的里程数虽然有所不同,所以谷歌搜索“jquery modal”并查看一些替代方案。

答案 3 :(得分:0)

我建议使用jQuery UI Dialog。这样您就不必担心不同的浏览器如何以不同的方式处理弹出窗口。

答案 4 :(得分:0)

正如其他人所说,某些浏览器(特别是Microsoft Internet Explorer)将拒绝打开JavaScript弹出窗口,除非它是由于用户交互而触发的。你可以用一些jQuery轻松伪造这个:

// Create a 'fake' a tag, this will never be added to DOM.
$('<a href="#" />')

    // Register a click handler which will open a new popup window.
    .click(function () { 
        window.open(url, name, options);
    })

    // Simulate the click in jQuery - this will open the popup window.
    .click();

答案 5 :(得分:0)

我无法对已接受的解决方案发表评论,因此我将在此发布 - 关于 Jonathan Sampsons 最后一个提议(这非常聪明):在最新的Firefox&amp; Chrome触发点击事件的元素必须是可见的。因此,您无法真正生成非呈现元素。

此外,如果您正在使用页面中的元素,只需选择一个尚未定义任何其他点击事件的元素 - 否则将触发所有其他点击事件,这可能不是理想的结果。