2013-02-08 4 views
0

Le code ci-dessous pour l'ouverture et la fermeture d'une fenêtre génère une erreur de script Java 'Membre introuvable'. Cela ne se produit pas dans toutes les machines mais pour certains utilisateurs avec IE 8. winobject.blur() dans le code suivant lève l'erreur.Membre introuvable dans le script java

var winobject=null; 
winobject = window.open('URL','Name',"width=1,height=1,top=2000,left=2000"); 
if(winobject!=null){ 
    winobject.blur(); 
    self.resizeTo(screen.availWidth,screen.availHeight); 
    winobject.close(); 
    ... 
} 

Une aide ou une suggestion pour résoudre ce problème? Quelques observations supplémentaires - Ce problème se produit uniquement lorsqu'une fenêtre avec le 'Nom' existe déjà. Disons que si l'utilisateur a déjà fermé la fenêtre pop-up qui était déjà ouverte, le code fonctionnera correctement. Aussi, si j'ajoute un window.open de plus sous celui en cours, aucune exception ne sera levée quand blur() est invoqué. Vous ne savez pas pourquoi?

+0

Que signifie «self» dans votre code? Fenêtre actuelle? Êtes-vous sûr que 'winobject.blur()' lance l'erreur après avoir essayé la suggestion de Tomasz? –

+0

@OurIranDirim - oui, se référer à la fenêtre actuelle .. J'ai eu un essai attraper le bloc sur le nouveau code et recevait toujours l'exception. ty –

Répondre

1

if (typeof winobject != "undefined")

Je viens d'avoir un problème avec quelque chose comme ça au travail aujourd'hui. Essayez-le, vous devriez être bon à faire.

Edit:

J'ai trouvé the following link qui semble expliquer ce qui se passe. Parce que vous créez ce window par vous-même, la "sécurité" d'IE8 empêche de nombreuses actions courantes.

Ma suggestion suivante comme solution serait d'entourer la fois winobject.blur() et winobject.close() avec if (winobject.blur) et if (winobject.close()) conditionals. Notez que vous n'avez pas la parenthèse après blur et close dans les if, car vous recherchez la présence de la méthode par opposition à l'appel de la méthode. Malheureusement, je ne suis pas sûr quelles sont les alternatives que vous pouvez utiliser pour obtenir le même effet. Mais cela devrait empêcher l'erreur d'être lancée.

+0

Merci pour la réponse. L'approche proposée ne fonctionne pas pour moi :( –

+0

J'ai mis à jour ma réponse avec un lien, j'espère que cela aide – krillgar

+0

Merci pour les informations supplémentaires, cela m'a vraiment aidé, j'ai essayé tout ce qui a été suggéré jusqu'ici mais je n'ai pas pu résoudre le problème. question ... –

Questions connexes