ancres défectueuses sous Chrome |
Répondre |
Auteur |
Sujet Recherche Options des sujets
|
brolysan
Admin Group Depuis le: 14 Août 2009 Pays: France Status: Inactif Points: 10144 |
Options des messages
Thanks(0)
Envoyé : 18 Oct 2013 à 10:06 |
Bon,
Pour ceux utilisant des ancres régulièrement sur leur site, il s'avère qu'avec les dernières versions de Chrome (sous Windows ou Mac), si l'on se sert de pages sécurisées dans un projet (du moins selon nos tests), celles ci ne fonctionnent pas. Les ancres fonctionnent parfaitement sous IE, Firefox et Safari. Pour cela, il va falloir apporter deux modifications au sein des pages ayant des ancres. La première : - ajouter un bloc de code source (de type javascript dans le header) avec comme texte : $(function(){ // * Anchors * // // Fix jump-to-anchor problem in certain browsers: var anchor_id = window.location.hash; if (anchor_id != "") { var $anchor = $(anchor_id); // anchor link defined at the top of this script if ($anchor.length) { // anchor found,force-scroll to it var anchor_position; // anchor absolute position while ($anchor && $anchor.css('position') != "absolute") { // go to first parent positioned absolutely, and take its coordinates: $anchor = $anchor.parent(); if (!$anchor || !$anchor.length) return; // unknown error } anchor_position = $anchor.offset(); if (anchor_position) { window.scrollTo(anchor_position.left,anchor_position.top); } } } // Edit Dmit OE: j'ai mis en commentaire les lignes suivants, c'est pour remplir automatiquement les ancres vides sur une page sans besoin de modifier a la main, mais il est possible que ce code peut casser certains elements - enlevez "//" pour tester // $('a').filter(function(){return ($(this).attr('name') && !$(this).html());}). // each(function(){$(this).html(' ');}); }); - Puis ajouter dans tous vos scripts-ancres (avant </a>) présent sur la page. testé et approuvé par Dmit (trouvé par lui serait plus exact en fait ) Si vous n'avez pas de problème particulier, ne faites pas cet ajout bien entendu.
Edité par Dmit OE - 18 Oct 2013 à 10:43 |
|
brolysan
Admin Group Depuis le: 14 Août 2009 Pays: France Status: Inactif Points: 10144 |
Options des messages
Thanks(0)
|
après tests (sur une seule pages qui me rendait certaines images "invisibles", voila le code modifié qui fonctionne sur celle ci :
$(function(){ // * Anchors * // // Fix jump-to-anchor problem in certain browsers: var anchor_id = window.location.hash; if (anchor_id != "") { var $anchor = $(anchor_id); // anchor link defined at the top of this script if ($anchor.length) { // anchor found,force-scroll to it var anchor_position; // anchor absolute position while ($anchor && $anchor.css('position') != "absolute") { // go to first parent positioned absolutely, and take its coordinates: $anchor = $anchor.parent(); if (!$anchor || !$anchor.length) return; // unknown error } anchor_position = $anchor.offset(); if (anchor_position) { window.scrollTo(anchor_position.left,anchor_position.top); } } } $('a').filter(function(){return ($(this).attr('name') && !$(this).html());}). each(function(){$(this).html(' ');}); }); Merci à ceux rencontrant ce bug de Chrome de nous dire votre feedback
Edité par brolysan - 18 Oct 2013 à 11:18 |
|
Dmit OE
Admin Group Depuis le: 31 Mai 2012 Status: Inactif Points: 13971 |
Options des messages
Thanks(1)
|
Le lien Wiki sur la creation d'ancres (en cours de re-edition):
http://wiki.openelement.com/fr/index.php?title=Cr%C3%A9ation_dune_ancre |
|
Répondre | |
Tweet
|
Aller au Forum | Permissions du forum Vous ne pouvez pas écrire un nouveau Sujet Vous ne pouvez pas répondre aux Sujets Vous ne pouvez pas effacer vos messages Vous ne pouvez pas éditer vos messages Vous ne pouvez pas créer des sondages Vous ne pouvez pas voter dans les sondages |