11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je pense avoir un problème JS qui m’amène un problème SEO...avec un blogspot.

Je me tourne vers quiconque aura une piste pour résoudre l'absence de balise H2 sur le code source de ma page index.

Voici un extrait du code source de mon autre blog http://www.lavia.fr/ qui laisse clairement apparaître la balise H2 ainsi que le titre de l'article (en jaune)

upload/1487119679-63892-code-source-lavia.jpg

Et voici maintenant une image de mon blog http://www.shoppingdelaura.com/ qui lui ne mentionne pas la balise H2, ni le titre : ennuyeux pour le SEO.!

upload/1487119885-63892-code-source-shoppingdelaura.jpg

C'est surement quelque chose dans mon script qui bloque mais je n'ai su mettre le doigt dessus...Alors je colle la partie CSS que je crois concernée d'abord. Et puis une partie JS qui me semble pertinente (voire aussi codepen http://codepen.io/lolomiaou83/pen/bgZVEm?editors=1100) .

Du coup ça rallonge un peu le message...désolée je sais pas comment le raccourcir..
Je ne suis pas du tout compétente en JS...et guère plus en html...

Merci de tout cœur pour votre aide...


  <div class='date-outer'>
    <b:if cond='data:post.dateHeader'>
      <h2 class='date-header'><span><data:post.dateHeader/></span></h2>
    </b:if>
    <div class='date-posts'>
      <div class='post-outer'>

        <div class='post hentry uncustomized-post-template'>
          <a expr:name='data:post.id'/>
          <b:if cond='data:post.title'>
            <h1 class='post-title entry-title'>
              <b:if cond='data:post.link'>
                <a expr:href='data:post.link'><data:post.title/></a>
              <b:else/>
                <b:if cond='data:post.url'>
                  <b:if cond='data:blog.url != data:post.url'>
                    <a expr:href='data:post.url'><data:post.title/></a>
                  <b:else/>
                    <data:post.title/>
                  </b:if>
                <b:else/>
                  <data:post.title/>
                </b:if>
              </b:if>
            </h1>
          </b:if>
          <div class='post-header'>
            <div class='post-header-line-1'/>
          </div>
          <div class='post-body entry-content' expr:id='&quot;post-body-&quot; + data:post.id'>
            <data:post.body/>
            <div style='clear: both;'/> <!-- clear for photos floats -->
          </div>
          <div class='post-footer'>
            <div class='post-footer-line post-footer-line-1'>
              <span class='post-author vcard'>
                <b:if cond='data:top.showAuthor'>
                  <b:if cond='data:post.authorProfileUrl'>
                    <span class='fn'>
                      <a expr:href='data:post.authorProfileUrl' rel='author' title='author profile'>
                        <data:post.author/>
                      </a>
                    </span>
                  <b:else/>
                    <span class='fn'><data:post.author/></span>
                  </b:if>
                </b:if>
              </span>

              <span class='post-timestamp'>
                <b:if cond='data:top.showTimestamp'>
                  <data:top.timestampLabel/>
                  <b:if cond='data:post.url'>
                    <a class='timestamp-link' expr:href='data:post.url' rel='bookmark' title='permanent link'><abbr class='published' expr:title='data:post.timestampISO8601'><data:post.timestamp/></abbr></a>
                  </b:if>
                </b:if>
              </span>

              <span class='post-comment-link'>
                <b:if cond='data:blog.pageType != &quot;item&quot;'>
                  <b:if cond='data:blog.pageType != &quot;static_page&quot;'>
                    <b:if cond='data:post.allowComments'>
                      <a class='comment-link' expr:href='data:post.addCommentUrl' expr:onclick='data:post.addCommentOnclick'><b:if cond='data:post.numComments == 1'>1 <data:top.commentLabel/><b:else/><data:post.numComments/> <data:top.commentLabelPlural/></b:if></a>
                    </b:if>
                  </b:if>
                </b:if>
              </span>
            </div>
hentry
            <div class='post-footer-line post-footer-line-2'>
              <b:if cond='data:top.showMobileShare'>
                <div class='mobile-link-button goog-inline-block' id='mobile-share-button'>
                  <a href='javascript:void(0);'><data:shareMsg/></a>
                </div>
              </b:if>
              <b:if cond='data:top.showDummy'>
                <div class='goog-inline-block dummy-container'><data:post.dummyTag/></div>
              </b:if>
            </div>

          </div>
        </div>
        <b:if cond='data:blog.pageType == &quot;static_page&quot;'>
          <b:include data='post' name='comment_picker'/>
        </b:if>
        <b:if cond='data:blog.pageType == &quot;item&quot;'>
          <b:include data='post' name='comment_picker'/>
        </b:if>
      </div>
    </div>
  </div>
</b:includable>
                        <b:includable id='nextprev'>
  <div class='blog-pager' id='blog-pager'>
    <b:if cond='data:newerPageUrl'>
      <span id='blog-pager-newer-link'>
   <a class='blog-pager-newer-link' expr:href='data:newerPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-newer-link&quot;' expr:title='data:newerPageTitle'><data:newerPageTitle/></a>
      </span>
    </b:if>

    <b:if cond='data:olderPageUrl'>
      <span id='blog-pager-older-link'>
<a class='blog-pager-older-link' expr:href='data:olderPageUrl' expr:id='data:widget.instanceId + &quot;_blog-pager-older-link&quot;' expr:title='data:olderPageTitle'><data:olderPageTitle/></a>
      </span>
    </b:if>

    <a class='home-link' expr:href='data:blog.homepageUrl'><data:homeMsg/></a>

    <b:if cond='data:mobileLinkUrl'>
      <div class='blog-mobile-link'>
        <a expr:href='data:mobileLinkUrl'><data:mobileLinkMsg/></a>
      </div>
    </b:if>

  </div>
  <div class='clear'/>
</b:includable>
<b:includable id='post' var='post'>
<div class='post hentry'>
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<b:if cond='data:post.title'>
<h1 class='article_post_title entry-title'>
<b:if cond='data:post.link'>       
<a expr:href='data:post.link'><data:post.title/></a>    
<b:else/>
<b:if cond='data:post.url'>
<b:if cond='data:blog.url != data:post.url'>
<a expr:href='data:post.url'><data:post.title/></a>
<b:else/>
<data:post.title/>
</b:if>
<b:else/>
<data:post.title/>
</b:if>
</b:if>
</h1>
</b:if>
<b:else/>
<b:if cond='data:blog.pageType == &quot;static_page&quot;'>
<b:if cond='data:post.title'>
<h2 class='post-title entry-title'>
 <b:if cond='data:post.link'>
<a expr:href='data:post.link'><data:post.title/></a>  
<b:else/>
<b:if cond='data:post.url'>
<b:if cond='data:blog.url != data:post.url'>
<a expr:href='data:post.url'><data:post.title/></a>
<b:else/>
<data:post.title/>
</b:if>
<b:else/>
<data:post.title/>
</b:if>
</b:if>
</h2>
</b:if>
</b:if>
</b:if>
<b:if cond='data:blog.pageType == &quot;item&quot;'>
<div class='article_meta_container post-header'>


<b:if cond='data:top.showAuthor'>
<span class='article_author vcard'>
  <abbr class='fn'>posted by <u><a expr:href='data:post.authorProfileUrl'><data:post.author/></a></u></abbr>
</span> 
</b:if>

<b:if cond='data:top.showTimestamp'>
<span class='article_timestamp'>
on <data:post.timestamp/>
</span>
</b:if>




<b:if cond='data:post.allowComments'>
<span class='article_comment_link right'>
<i class='fa fa-comments'/>
<a expr:href='data:post.addCommentUrl' expr:onclick='data:post.addCommentOnclick'><b:if cond='data:post.numComments == 0'>No Comments</b:if><b:if cond='data:post.numComments == 1'>1 comment</b:if><b:if cond='data:post.numComments &gt;= 2'><data:post.numComments/> comments</b:if></a>
</span>
</b:if>
</div>

    </b:if>

    <div class='post-body entry-content' expr:id='&quot;post-body-&quot; + data:post.id'>

      <b:if cond='data:blog.pageType == &quot;item&quot;'>

<data:post.body/>

<b:else/>
<b:if cond='data:blog.pageType == &quot;static_page&quot;'>
<data:post.body/>

<b:else/>
<div expr:id='&quot;p&quot; + data:post.id'>
<data:post.body/>

</div>



<div class='article_footer clearfix'>
<b:if cond='data:post.labels'>
<div class='meta-item categories'>
<b:loop values='data:post.labels' var='label'>
<a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != &quot;true&quot;'/>
</b:loop>
</div>
</b:if>

<div class='meta_date right'>
<span class='article_timestamp'>
<i class='fa fa-bookmark'/>
<data:post.timestamp/>
</span>
</div>
</div>

<script type='text/javascript'>
var x= &quot;<data:post.title/>&quot;;rm(&quot;p<data:post.id/>&quot;,&quot;<data:post.url/>&quot;,&quot;<data:post.timestamp/>&quot;,&quot;<data:post.numComments/>&quot;);
</script>

</b:if>
</b:if>
      <div style='clear: both;'/> <!-- clear for photos floats -->
    </div>

<b:if cond='data:blog.pageType == &quot;item&quot;'>
<div class='post-footer'>



Et il avait aussi ce code javascript (au dessus) qui me semble pertinent :

// JavaScript Document
function removeHtmlTag(e, t) {
    if (e.indexOf("<") != -1) {
        var n = e.split("<");
        for (var r = 0; r < n.length; r++) {
            if (n[r].indexOf(">") != -1) {
                n[r] = n[r].substring(n[r].indexOf(">") + 1, n[r].length)
            }
        }
        e = n.join("")
    }
    t = t < e.length - 1 ? t : e.length - 2;
    while (e.charAt(t - 1) != " " && e.indexOf(" ", t) != -1) t++;
    e = e.substring(0, t - 1);
    return e + ""
}

function rm(e,t,date,comment) {
    var r = document.getElementById(e);
 	var date = date;
 	var comment = comment;
    var s = "";
    var o = r.getElementsByTagName("img");
    var u = r.getElementsByTagName("iframe");
    var a = summary_noimg;
    var p = "";

    if (o.length >= 1) {
        s = '<div class="article_image"><a title="" href="' + t + '"><img src="'+o[0].src.replace(/s\B\d{2,4}/,'s' + 720)+'" class="img-responsive"/></a></div>';
        a = summaryi;

    }


    if (r.innerHTML.indexOf("thumbvideo") != -1) {
        s = '<div class="playbutton"><a title="" href="' + t + '"><img alt="" class="imgcon" src="' + o[0].src + '" width="' + thw + 'px" height="' + thh + 'px"/></a></div>';
        a = summaryv
    }
    if (r.innerHTML.indexOf("http://www.youtube.com/v/") != -1) {
        var v = u[0].src;
        var m = v.substring(v.indexOf("http://www.youtube.com/v/") + 25);
        s = '<div class="playbutton"><a href="' + t + '"><iframe class="imgcon" src="http://www.youtube.com/embed/' + m + '" width="' + thw + 'px" height="' + thh + 'px"></iframe></div>';
        a = summaryi
    }
    if (r.innerHTML.indexOf("http://www.youtube.com/embed/") != -1) {
        var v = u[0].src;
        var m = v.substring(v.indexOf("http://www.youtube.com/embed/") + 29);
        s = '<div class="playbutton youtube"><iframe class="imgcon" src="http://www.youtube.com/embed/' + m + '" width="' + thw + 'px" height="' + thh + 'px"></iframe></div>';
        a = summaryi;

    }
    if (r.innerHTML.indexOf("//www.youtube.com/embed/") != -1) {
        var v = u[0].src;
        var m = v.substring(v.indexOf("//www.youtube.com/embed/") + 24);
        s = '<div class="playbutton youtube"><iframe class="imgcon" src="http://www.youtube.com/embed/' + m + '" width="' + thw + 'px" height="' + thh + 'px"></iframe></div>';
        a = summaryi;

    }
    if (r.innerHTML.indexOf("http://www.youtube-nocookie.com/embed/") != -1) {
        var v = u[0].src;
        var m = v.substring(v.indexOf("http://www.youtube-nocookie.com/embed/") + 38);
        s = '<div class="playbutton youtube" ><iframe class="imgcon" src="http://www.youtube.com/embed/' + m + '" width="' + thw + 'px" height="' + thh + 'px"></iframe></div>';
        a = summaryv;

    }
    if (r.innerHTML.indexOf("//www.youtube-nocookie.com/embed/") != -1) {
        var v = u[0].src;
        var m = v.substring(v.indexOf("//www.youtube-nocookie.com/embed/") + 33);
        s = '<div class="playbutton youtube"><iframe class="imgcon" src="http://www.youtube.com/embed/' + m + '" width="' + thw + 'px" height="' + thh + 'px"></iframe></div>';
        a = summaryi;

    }
    if (r.innerHTML.indexOf("http://player.vimeo.com/video/") != -1) {
        var v = u[0].src;
        var m = v.substring(v.indexOf("http://player.vimeo.com/video/") + 30);

        s = '<div class="playbutton vimeo"><iframe class="imgcon" src="//player.vimeo.com/video/' + m + '" width="' + thw + 'px" height="' + thh + 'px" ></iframe></div>';
        a = summaryi;

    }
    if (r.innerHTML.indexOf("//player.vimeo.com/video/") != -1) {
        var v = u[0].src;
        var m = v.substring(v.indexOf("//player.vimeo.com/video/") + 25);
        s = '<div class="playbutton vimeo"><iframe class="imgcon" src="//player.vimeo.com/video/' + m + '" width="' + thw + 'px" height="' + thh + 'px" ></iframe></div>';
        a = summaryi;

    }


var g ='<div class="article_container">'+ s +'<div class="article_inner"><div class="article_header"><h2><a href="' + t + '">'+ x +'</a></h2><div class="article_date"><span>'+date+'</span></div></div><div class="article_excerpt clearfix"><p>'+removeHtmlTag(r.innerHTML, a)+'</p></div></div></div>';

r.innerHTML = g;

}
var summary_noimg = 50;
summaryi = 100;
summaryv = 100;
thh = 420;
thw = 674;
Bonjour Jencal,
Merci beaucoup d'avoir répondu.
C'est vrai en faisant un inspecter la page, il voit cette balise.
Cependant, si on fait code source de la page sur l'article, on ne voit plus cette balise H2 comme sur le site http://www.lavia.fr/ code source article ou là elle apparaot clairement avec la title.
J'ai essayé de voir du coté de la var g et var x mais en vain je n'ai pas les competences (il semble que "rm" interviennent ???...y verriez vous quelque chose qui puisse bloquer l'affichage de url +title dans le java script ?

Encore mille fois merci de jeter un oeil
Jencal

En faisant le test d'analyse de liens internes : ici=> http://alyze.info/ de la page index http://www.shoppingdelaura.com/, on peut voir les liens des tags (catégories), les liens des Popular post PAR CONTRE les url et la tittle des articles de cette page n'apparaissent pas.

Ex: http://www.shoppingdelaura.com/2017/02/veste-femme-sans-manche-noire-caroll.html
n'est pas lu par cet outil et ni par les moteurs de recherche...et d'ailleurs dans le code source on ne le vois pas.
Alyse ne vois que l'url de l'image de l'article (en jpg) mais pas le lien de l'article.

L'action devrait dire : on récupère la tittle en la renseignant avec une balise H2 et en mettant l'url correspondant à l'article comme dans mon autre blog Lavia

Ainsi pour cette URL: http://www.shoppingdelaura.com/2017/02/veste-femme-sans-manche-noire-caroll.html

On devrait donc voir dans le code source :
<h2>
<a href=' http://www.shoppingdelaura.com/2017/02/veste-femme-sans-manche-noire-caroll.html'>
Veste femme sans manche noire CAROLL
</a>
</h2>

ce qui est capital pour que le SEO de la page et des articles.
Et moi je pense que quelque chose le bloque dans mon script...surement dans les variables ???.
Actuellement, sur l'url que tu me poste, tu as un h1 ( et non un h2 comme tu le voudrais)

Essaye donc de remplacer :

<h1 class='article_post_title entry-title'>
<b:if cond='data:post.link'>       
<a expr:href='data:post.link'><data:post.title/></a>    
<b:else/>
<b:if cond='data:post.url'>
<b:if cond='data:blog.url != data:post.url'>
<a expr:href='data:post.url'><data:post.title/></a>
<b:else/>
<data:post.title/>
</b:if>
<b:else/>
<data:post.title/>
</b:if>
</b:if>
</h1>


par
<h2 class='article_post_title entry-title'>
<b:if cond='data:post.link'>       
<a expr:href='data:post.link'><data:post.title/></a>    
<b:else/>
<b:if cond='data:post.url'>
<b:if cond='data:blog.url != data:post.url'>
<a expr:href='data:post.url'><data:post.title/></a>
<b:else/>
<data:post.title/>
</b:if>
<b:else/>
<data:post.title/>
</b:if>
</b:if>
</h2>
Bonjour Jencal...merci pour ta réponse....

Oui en effet l'url de cette page interne http://www.shoppingdelaura.com/2017/02/veste-femme-sans-manche-noire-caroll.html est bien en h1 et c'est parfait pour le SEO

Par contre cette url se trouve aussi sur la page index http://www.shoppingdelaura.com/ (dernier article publié sur la page index).

ET c'est donc sur la page index (http://www.shoppingdelaura.com/) que j'aimerais voir dans le code source :

<h2>
<a href=' http://www.shoppingdelaura.com/2017/02/veste-femme-sans-manche-noire-caroll.html'>
Veste femme sans manche noire CAROLL
</a>
</h2>

Cordialement
Edit : je supprime mon message, je crois comprendre.
Modifié par JENCAL (17 Feb 2017 - 18:01)
Là a distance c'est bien compliquer de deviner pourquoi ....

Tout ce que je vois, c'est que tu n'a pas le même code javascript des deux coté, d'un coté tu as l'appel de la méthod
createSummaryAndThumb 
et de l'autre tu as
var g ='<div class="article_container">'+ s +'<div class="article_inner"><div class="article_header"><h2><a href="' + t + '">'+ x +'</a></h2><div class="article_date"><span>'+date+'</span></div></div><div class="article_excerpt clearfix"><p>'+removeHtmlTag(r.innerHTML, a)+'</p></div></div></div>';

et ce var g ajoute les balises h2 (visible dans l'especteur d'éléments) mais pas dans le code source qui est le code sans le javascript généré.
Modifié par JENCAL (17 Feb 2017 - 18:12)
...je comprend mieux Jencal.

Dans ce cas penses-tu qu'il y ait un moyen d'y remédier ?

En fait je viens de transférer tout mon blog de Overblog vers Blogspot et de finaliser les détails de la mise en page sur Blogspot (un gros boulot)...quand je me suis aperçue de ce problème de SEO et qui n'est pas des moindres...

J'aimerais tant pouvoir garder ce script...
Bonjour Jencal,

j'ose insister car je tourne en rond toute seule, un peu désespérée, dans mon script pour trouver une solution.

Vous semblez avoir mis le doigt sur le problème...auriez vous l'idée d'une solution ???
Modifié par lolomiaou83 (20 Feb 2017 - 16:39)
En faite, ce qu'il faut savoir, c'est que ce qui est générer par du code JavaScript n'est pas "visible" dans le "code source" de la page (contrairement à l'inspecteur d’élément).

Si vous devez absolument avoir les balises H2 dans votre code source, il faut les ajouter manuellement en HTML.

P.S :

Je reviens sur la méthode createSummaryAndThumb, je ne sais pas à quoi elle sert, mais ce n'est pas elle qui génére les H2, sur Lavia, car sur Lavia les h2 sont surement présent dans le code HTML de base et ne sont (je pense) pas générer via du javascript comme sur shoppingdelaura.
Modifié par JENCAL (21 Feb 2017 - 10:50)
Modérateur
lolomiaou83 a écrit :
Jencal

En faisant le test d'analyse de liens internes : ici=&gt; http://alyze.info/ de la page index http://www.shoppingdelaura.com/, on peut voir les liens des tags (catégories), les liens des Popular post PAR CONTRE les url et la tittle des articles de cette page n'apparaissent pas.

Ex: http://www.shoppingdelaura.com/2017/02/veste-femme-sans-manche-noire-caroll.html
n'est pas lu par cet outil et ni par les moteurs de recherche...et d'ailleurs dans le code source on ne le vois pas.
Alyse ne vois que l'url de l'image de l'article (en jpg) mais pas le lien de l'article.

Peut-être que alyze.info et la plupart des outils bricolés ne le voient pas, mais google voit bien ce genre de contenus (générés par document.write). Si c'est le 95% des moteurs de recherche qui vous importe, ne changez rien. Par contre si vous avez une démarche plus absolutiste, ça peut poser problèmes sur certains moteurs de recherche marginaux.

Si vous souhaitez savoir comment Google voit votre site, utilisez plutôt les outils… de Google, les webmaster tools pour commencer, plutôt que ce genre d'outils à la pertinence discutable.
Merci pour vos reponses...

Jencal, vous me donner la réponse qui me semble la plus logique dans mon problème...j'essaie de placer en vain :

<h2><a expr:href='data:post.url'><data:post.title/></a></h2>

ou

<h2><a expr:href='data:post.link'><data:post.title/></a></h2>

mais en vain...je ne sais pas ou mettre cette ligne dans mon script ??? pour qu'il en tienne compte. Auriez vous une idée ? Est ce que ce fragment de code serait suffisant ?

Je sais que vous êtes un spécialiste en JS, le HTML / XML est-il dans vos cordes ?
Modifié par lolomiaou83 (21 Feb 2017 - 16:08)
non mais là tu va être bloquer
car ton script :
var g ='<div class="article_container">'+ s +'<div class="article_inner"><div class="article_header"><h2><a href="' + t + '">'+ x +'</a></h2><div class="article_date"><span>'+date+'</span></div></div><div class="article_excerpt clearfix"><p>'+removeHtmlTag(r.innerHTML, a)+'</p></div></div></div>';

généré toute la structure de tes article container donc tu n'a pas accès au html pure (sans la génération javascript) car celui ci est codé de manière à étre générer uniquement en javascript.

Par contre la réponse de kustolovic est très intéressante.
Bonsoir Jenca

Nous avons bien sur utilisé l'outil web master tools ( Search Consol) ainsi que Explorer comme Google et c'est bien confirmé : il ne voit pas la balise H2 ainsi que le lien vers l'article. Et ça c'est un problème.

Tu confirmes donc qu'on ne peut insérer de code HTML pour faire émerger cette balise et la tittle ????

Ne peut-on modifier la VAR G ????
Modérateur
Je vous confirme cependant que Google les voit bien:

upload/1487715863-32231-capturedaeacran2017-02-21aa23.png

Après il y a des centaines de sites qui ont exactement les même produits (et pour certains beaucoup plus de poids), le problème du référencement vient plutôt de là. Il faudrait plutôt revoir le contenu des titres pour pouvoir se différencier. Et proposer du contenu ainsi que convaincre des gens de se rendre sur votre site.

Et si je puis me permettre, en l'état, votre site ressemble plus à une boutique marchande douteuse avec trop de pub qu'à un blog. En l’occurrence Google fait plutôt bien son travail en reléguant ce genre de site dans les très-fonds de son classement.
Ce que je confirme, c'est que votre
var g

embarque, déploie, intègre, met en place une structure assez complète :
   <div>
<div>
     <h2>
          <a>
         </a>
     </h2
    </div>
</div>
<span></span>
etc....

donc si tu veux intégré manuellement la balise h2 tu es obligé de reconstitué l'architecture également à la main pour ne pas avoir de regression mais c'est pas fun à faire.
En effet la function "rm" intervient, elle est appelé dans le html pour insérer la var g.
Merci Jencal pour ton aide...ce que tu dis est absolument vrai.
Il faut reconstituer un code à intégrer...
Je pense avoir la solution d'un ajout de code sur un forum Blogger.
Merci énormément à toi