2010-09-22 8 views
0

Supposons que nous avons une page avec la structure suivante:Obtenir des données DOM avec référence URL

<li id="A"> 
<span class="some class">some content 
<a href="http://www.example.com">http://www.example.com</a> 
</span> 
</li> 

<li id="B"> 
<span class="some class">some content 
<a href="http://www.example.com">http://www.example.com</a> 
</span> 
</li> 

<li id="C"> 
<span class="some class">some content 
<a href="http://www.example.com">http://www.example.com</a> 
</span> 
</li> 

Est-il possible, avec PHP ou JS, pour saisir l'identifiant de liste (A, B, C) et l'ajouter avec l'URL de référence quand une personne clique sur l'un des trois liens?

  • Besoin de savoir précisément où l'une de la liste trois balises clic origine de
  • Je n'ai pas accès en écriture à la page d'origine
+0

Peut-être que je suis mal interprété, mais n'est-ce pas plus une question JavaScript que quelque chose que PHP devrait faire? – salathe

+0

très possible, existe-t-il une solution JS à cela? – Chamilyan

+0

J'ai supprimé mon message. Après l'avoir lu deux fois, je suis d'accord avec Salathe: C'est quelque chose que vous voulez faire dans JavaScrapt plutôt que PHP. – halfdan

Répondre

0

MISE À JOUR

À la lumière de votre révélation que vous n'avez pas accès à la page d'origine, vous n'avez aucune chance de trouver quelque chose sur le lien spécifique qui a été cliqué pour arriver à votre page. Vous pouvez obtenir le référent avec document.referrer.

Réponse précédente pour la postérité

La fonction suivante capturera un clic sur un lien dans l'élément conteneur avec l'id spécifié et ajouter une chaîne de requête contenant l'identifiant de l'élément conteneur et l'URL du courant la page à l'URL:

function modifyLink(containerId) { 
    var el = document.getElementById(containerId); 
    el.onclick = function(evt) { 
     evt = evt || window.event; 
     var target = evt.target || evt.srcElement; 
     if (target.tagName == "A") { 
      window.location.href = target.href + "?id=" + encodeURIComponent(containerId) + 
       "&referrer=" + encodeURIComponent(window.location.href); 

      return false; // Cancel the default link behaviour 
     } 
    }; 
} 

modifyLink("A"); 
modifyLink("B"); 
modifyLink("C"); 
+0

Oui, cela répond à la question posée. Mon erreur de ne pas avoir pris en compte le fait que je n'ai pas d'accès en écriture à la page d'origine. Seulement lire l'accès. Je ne serai pas en mesure d'inclure un Javascript sur la page d'origine. Est-ce encore possible? – Chamilyan

+0

@egfx: Je suppose que cela signifie que vous êtes le propriétaire du site auquel vous êtes lié, plutôt que celui qui contient le code que vous avez cité? C'est un point assez fondamental à la façon dont la question recevrait une réponse! Vous devriez probablement modifier la question pour inclure cette information. – Spudley

+0

@Spudley Oui, merci J'ai déjà inclus cet extrait d'information. J'ai négligé ce fait en posant la question. C'est exactement vrai. Je possède le site lié à mais ne possède pas le site avec la structure HTML qui est incluse dans l'exemple. – Chamilyan

0

Nous avons établi (via les commentaires sur une autre réponse) que le questionneur est propriétaire du site étant lié, non pas celui qui contient les liens. Par conséquent, il n'y a rien que vous pouvez faire pour manipuler les liens dans le code qu'il a cité, ce qui signifie que ni Javascript ni PHP, ni même aucune autre langue ne vous aidera. Donc, la réponse évidente est non: En tant que propriétaire de example.com, vous ne pouvez pas dire lequel de ces trois liens a été celui sur lequel vous avez cliqué pour arriver sur votre site. Si les liens se trouvaient sur des pages séparées, vous seriez en mesure de dire à partir des données de référence, mais pour les liens sur la même page, HTTP ne vous fournit simplement pas cette information, donc vous ne pouvez pas le dire. Vous seriez seulement capable de dire si les liens pointaient vers des URL différentes (peut-être avec un paramètre de requête), mais cela nécessiterait que les liens soient modifiés et vous ne pouvez pas modifier les liens vous-même. La seule solution que je peux vous proposer est la réponse démodée: contactez le propriétaire du site contenant les liens, et demandez-lui de les modifier afin qu'ils soient uniques.

+0

Oui, euh. Considérant que le site est Twitter, les contacter pour changer leur mise en page pour accommoder mon petit cas d'utilisation peut être un obstacle;). Merci cependant pour votre contribution. Je marque la réponse ci-dessus avec le code comme résolu. – Chamilyan

Questions connexes