Pourquoi Math.Round ouvre une fenêtre d'impression à partir d'un navigateur dans Try .NET

Aujourd'hui, l'attention du public a été attirée sur un bug illogique drôle découvert dans Try .NET , un outil conçu pour intégrer des exemples interactifs en C # dans la documentation. Vous pouvez voir le problème ouvert sur Github sur le lien .

Le code donné lors de l'exécution (lors de l'appel de la méthode Math.Round ) au lieu du résultat attendu ouvre soudainement une fenêtre d'impression à partir du navigateur:

using System; public class Example { public static void Main() { var x = Math.Round(11.1, MidpointRounding.AwayFromZero); } } 


image

À l'aide de la trace d'erreur et des points d'arrêt, les utilisateurs ont trouvé une raison alléguée de ce comportement - elle était cachée dans la bibliothèque mono.js.

image

La réponse est simple. Apparemment, quelqu'un voulait utiliser sa propre fonction print () dans JS (ou la confondait avec console.log ), mais comme il n'y en avait pas dans la portée, le programme appelle window.print () , qui devrait vraiment ouvrir la fenêtre d'impression du courant document - parce que la fenêtre est un objet global pour le flux principal dans le navigateur.

Cette solution de repli n'a pas été immédiatement remarquée, mais un utilisateur affirme que cette erreur a été corrigée en novembre dernier .

Afin d'éviter les situations dans lesquelles des erreurs de ce type se produisent, le projet create-react-app conserve une liste de variables globales de navigateur "déroutantes" , car il est assez simple de faire une erreur similaire:

 handleClick() { //   `event` this.setState({ text: event.target.value //    `event`- ! }); } 

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


All Articles