TypeError: undefined is not an object (evaluate to "newWindow.focus")

I have the following javascript that opens a child window with dimensions and aligns it to the center of the screen.

function PopupCenter(url, title, w, h) { // Fixes dual-screen position Most browsers Firefox var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left; var dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top; var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width; var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height; var left = ((width / 2) - (w / 2)) + dualScreenLeft; var top = ((height / 2) - (h / 2)) + dualScreenTop; var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left); // Puts focus on the newWindow if (window.focus) { newWindow.focus(); } var timer = setInterval(checkChild, 500); function checkChild() { if (newWindow.closed) { var message = 'You have aborted the transaction by closing the window !'; var status = 'closed'; paymentResponseDisplay(message,status) clearInterval(timer); } } window.onbeforeunload = function() { if(!newWindow.closed){ return "Do you really want to abort this transaction?"; } } } 

But in safari I get

 TypeError: undefined is not an object (evaluating 'newWindow.focus') 

I can not find a fix for this. Can anyone help?

+1
source share
1 answer

In my case, this problem occurred due to the fact that I caused a popup from the ajax result in Safari. I got ajax with sync and it worked fine.

window.open () works differently with AJAX success

0
source

Source: https://habr.com/ru/post/1285854/


All Articles