web-dev-qa-db-fra.com

Activation des barres de défilement du navigateur après window.open avec des barres de défilement = no

J'ai un lien existant qui ouvre une page Web dans une nouvelle fenêtre avec les barres de défilement désactivées comme suit:

<a onclick='window.open("example.html", "name", "resizable=1,scrollbars=no,width=500,height=200");' href='#'>Click to pop up without scroll bars</a>

Par souci d'argument, je ne peux pas changer ce code window.open (). Je dois activer les barres de défilement une fois la fenêtre ouverte.

Cela fonctionne dans IE en utilisant le code suivant:

 <script type="text/javascript">
    onload=function()
        {
    enableScrolling();
    }
    function enableScrolling()
    {
      document.body.scroll = "yes"; // IE 
    }
 </script> 

Toutefois, cela ne fonctionne pas dans FireFox ou Chrome.

Selon cette page, le code suivant devrait fonctionner pour Firefox et Chrome, mais pas (peut-être que cela fonctionnait dans les versions précédentes?)

      document.documentElement.style.overflow='scroll';
      document.body.style.overflow='scroll';

Est-ce que quelqu'un sait s'il est possible d'activer les barres de défilement dans FireFox et Chrome après que la fenêtre a été ouverte avec les barres de défilement désactivées?

12
Dan Cook

Tout comme Nikunj Soni l'a dit, définir un attribut height sur votre balise body vous aidera à résoudre le problème dans chaque navigateur. Ce que je ferai différemment est le suivant:

Au lieu de définir une hauteur fixe, je définirais height:100%, ce qui vous permettra également d'ouvrir la fenêtre contextuelle dans des tailles différentes de celles de l'original.

<body style="overflow:auto; height:100%;">
        The rest of your HTML code   
</body>

Ce n’est pas non plus la meilleure solution, mais vous supprimez les restrictions du lien.

J'espère que vous trouverez cette réponse utile.

2
Toteb99

En fait, j'ai essayé avec un navigateur différent. Si vous avez des exigences fixes en matière de hauteur, vous pouvez envelopper tout le contenu de example.html dans un div spécifique avec le css attaché comme overflow:auto;height:200px. Je vais vous montrer le code entier.

<body>
<div style="overflow:auto;height:200px;">
    Your HTML code       
</div>
</body>

mettez-le dans example.html . Hauteur que vous pouvez obtenir avec votre code window.open("example.html", "name", "resizable=1,scrollbars=no,width=500,height=200");.

Ce n'est pas la solution réelle, mais cela résoudra votre problème dans tous les navigateurs.

J'espère que cette aide.

0
Nikunj Soni

Puisque vous ajoutez js pour IE, je suppose que vous pouvez changer le mode de fonctionnement de la page affichée. Dans ce cas, j'essaierais de mettre le contenu de la fenêtre ouverte en div et de définir son style sur quelque chose comme: hauteur: 200px; débordement: auto;

0
norbi771