Comment personnaliser la résolution d'écran signalée à une application JavaScript par un navigateur?

window.screen.availHeight valeurs window.screen.availHeight et window.screen.availWidth permettent aux applications Web de connaître ma résolution d'écran réelle alors que je ne veux pas toujours qu'elles le sachent. Puis-je définir mes propres valeurs pour ces propriétés? Je suis intéressé par des solutions pour Firefox et Chrome.

    One Solution collect form web for “Comment personnaliser la résolution d'écran signalée à une application JavaScript par un navigateur?”

    Question intéressante. Il est possible en théorie d'écraser les propriétés window.screen.availHeight et window.screen.availWidth à l'aide de la fonction Object.defineProperty .

    Essayez le fichier suivant:

    Test.html :

     <html> <head> <script> window.alert("Window resolution before overwrite is " + window.screen.availWidth + " x " + window.screen.availHeight); Object.defineProperty(window.screen, "availWidth", { get: function(){return 0; }}); Object.defineProperty(window.screen, "availHeight", { get: function(){return 0; }}); </script> </head> <body> <script> window.alert("Window resolution after overwrite is " + window.screen.availWidth + " x " + window.screen.availHeight); </script> </body> </html> 

    Cependant, pour répondre à votre question d'une façon générique de faire en sorte que cela se produise sur tous les sites, je ne peux que fournir une réponse partielle.

    En utilisant UserScripts (via Greasemonkey) sur Firefox, le script suivant a l'effet désiré (à utiliser, installer le complément Greasemonkey puis redémarrer Firefox et faire glisser le script sur la fenêtre de Firefox).

    Hide_screen_resolution.user.js :

     // ==UserScript== // @name Hide screen resolution // @description This script hides access to the screen resolution through window.screen.availHeight and window.screen.availWidth values. // @include * // @run-at document-start // ==/UserScript== Object.defineProperty(window.screen, "availWidth", { get: function(){return 0; }}); Object.defineProperty(window.screen, "availHeight", { get: function(){return 0; }}); 

    Maintenant, si test.html est ouvert à nouveau, on peut voir que la résolution de l'écran avant l'écrasement est déjà réinitialisée en fournissant les résultats souhaités.

    Malheureusement, Chrome ne prend pas en charge le code courant tel que celui-ci avant que le document ne soit chargé, de sorte que ce code utilisateur ne fonctionne pas. J'ai posté cette réponse dans l'espoir que quelqu'un puisse vous suggérer une solution possible dans Chrome.

    Soyons le génie de l'ordinateur et du réseau.