Catch the window.open from javascript

html, iframe, javascript

Solution

While I would not recommend this in general, you can overwrite the definition of the `window.open` function in the iframe, assuming your page and the iframe are in the same domain to avoid XSS security errors.

HTML:

<iframe id="myFrame" src="...">
</iframe>

javascript in the parent window:

var frame = document.getElementById('myFrame');

if (frame) {
    frame.contentWindow.open = function (url, windowName, windowFeatures) {
        // do whatever you want here (e.g. open an ajax modal frame)
    };
}

Problem

I have a web page into a html iframe, the web page has a javascript function to open links, that function use the window.open method to open a new window. I cannot modify the javascript function (the page is made with mapguide), so I want to catch that call outside of the iframe to put the content of the new window into an ajax modal frame, instead of open a new window, is this possible?

Original source