如何捕获Javascript弹出窗口的未知原因?

时间:2009-12-26 14:08:23

标签: javascript popup firebug breakpoints

我正在调试其他人的网页。它上面有一个试图在弹出窗口中打开自己的链接,其原因尚不清楚 - HTML(onclick = foo)中没有任何明显的原因导致这种情况发生。

禁用JavaScript意味着链接正常打开。我有Firefox / Firebug / Dom Inspector,并希望捕获导致弹出窗口的任何JavaScript事件。由于我找不到代码,我被困住了。

Firebug可以创建一种全局断点来捕获所有代码吗?是否有其他方法可以挂钩并检查它?

有问题的页面是http://hijinxmusic.co.uk/,问题链接在底部附近是“绿色政策”。

感谢您的时间。

3 个答案:

答案 0 :(得分:3)

绿色政策文档会在加载时打开一个弹出窗口:

<body onload="MM_openBrWindow('green%20policy.htm','green','width=900,height=600')">

这是里面的 green policy.htm

答案 1 :(得分:0)

只需添加到David's answer,在http://hijinxmusic.co.uk/green%20policy.htm页面中对正文加载执行的功能实质上会调用window.open()

function MM_openBrWindow(theURL,winName,features) { //v2.0
    window.open(theURL,winName,features);
}

答案 2 :(得分:0)

更大的问题是,您尝试在新窗口中打开的页面与用户已经在查看的窗口相同,这没有任何意义。更重要的是,如果弹出窗口阻止程序没有阻止窗口创建,则会有无限循环的弹出窗口(加载green policy.html,打开新的green policy.html,加载green policy.html等)。你想把弹出窗口发生在哪里?

此外,要添加到Russ Cam's answer,您可以通过检查window.open的返回值来检测弹出窗口何时无法打开。我在Firefox,IE,Opera和Safari中成功使用过它(不需要在Chrome中测试)。使用提供的函数,这就是我处理阻塞弹出窗口的方式:

function MM_openBrWindow(theURL,winName,features) { //v2.0
    if ( !window.open(theURL, winName, features) ) {
        // Window failed to open:
        // show a HTML dialog/popover that prompts the user to allow
        // popups from this site, along with a `cancel` and `try again`
        // button.  The `try again` button will attempt to open the
        // window again with the provided parameters
        dialog.popupBlockedNotice.open(arguments);
    }
    // Window opened successfully.
}