English 中文(简体)
How can I trap the unknown cause of a Javascript popup?
原标题:

I am debugging someone else s web page. There is a link on it which tries to open itself in a popup window, the reason for this is unclear -- there is nothing obvious in the HTML (onclick=foo) to cause this.

Disabling JavaScript means the link opens normally. I have Firefox/Firebug/Dom Inspector and would like to trap whatever JavaScript event is leading to the popup. Since I can t find the code, I m stuck.

Can Firebug create a sort of global breakpoint to trap all code? Is there some other way to hook into this behaviour and inspect it?

The page in question is http://hijinxmusic.co.uk/ and the problem link is "Green Policy" near the bottom.

Thanks for your time.

问题回答

The green policy document opens a popup with itself on load:

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

This is inside green policy.htm

Just to add to David s answer, the function that gets executed on body load in the page at http://hijinxmusic.co.uk/green%20policy.htm essentially calls window.open()

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

The bigger problem is that the page that you are trying to open in a new window is the same window that the user is already looking at, which doesn t make any sense. What s more is that if the popup blocker wasn t blocking window creation, you would have an infinite loop of popups (load green policy.html, open a new green policy.html, load green policy.html, etc). Where did you want the popup to happen?

Also, to add to Russ Cam s answer, you can detect when the popup fails to open by checking the return value of window.open. I have used this successfully in Firefox, IE, Opera and Safari (haven t needed to test in Chrome). Using the provided function, this is how I handle blocked popups:

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.
}




相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签