URL relative à un numéro de port différent dans un lien hypertexte?

Existe-t-il un moyen de créer un lien vers un numéro de port différent sur la même boîte, sans le script Javascript / côté serveur, si je ne connais pas le nom d’hôte?

par exemple:

Look at the other port 

(Cet exemple ne fonctionne pas car il traitera simplement: 8080 comme une chaîne que je veux parcourir)

Ce serait bien si cela pouvait fonctionner, et je ne vois pas pourquoi, car : est un caractère réservé à la séparation des ports dans le composant URI, de sorte que le navigateur puisse l’interpréter de manière réaliste comme un port par rapport à cette URL, Et il n’y a aucun moyen de le faire.

Vous aurez donc besoin de Javascript pour ce faire;

 // delegate event for performance, and save attaching a million events to each anchor document.addEventListener('click', function(event) { var target = event.target; if (target.tagName.toLowerCase() == 'a') { var port = target.getAtsortingbute('href').match(/^:(\d+)(.*)/); if (port) { target.href = port[2]; target.port = port[1]; } } }, false); 

Testé dans Firefox 4

Violon: http://jsfiddle.net/JtF39/79/


Mise à jour : Correction d’un bug pour append un port à la fin de l’URL et ajout du support pour les URL relative et absolue à append à la fin:

 Test absolute Test relative 

Que penses-tu de ceux-ci:

Modifiez le numéro de port sur le clic:

 Look at another port 

Cependant, si vous passez votre souris sur le lien, le lien avec le nouveau numéro de port n’est pas affiché. Ce n’est que lorsque vous cliquez dessus, qu’il ajoute le numéro de port. De plus, si l’utilisateur clique avec le bouton droit de la souris sur le lien et effectue la copie de l’emplacement du lien, il obtient l’URL non modifiée sans le numéro de port. Donc, ce n’est pas idéal.

Voici une méthode pour changer l’URL juste après le chargement de la page. Si vous survolez le lien ou faites “Copier l’emplacement du lien”, vous obtiendrez l’URL mise à jour avec le numéro de port:

      Look at another port   

Vous pouvez le faire facilement en utilisant document.write et l’URL s’affichera correctement lorsque vous le survolerez. Vous n’avez pas non plus besoin d’un identifiant unique en utilisant cette méthode et cela fonctionne avec Chrome, FireFox et IE. Étant donné que nous référençons uniquement les variables et ne chargeons aucun script externe, l’utilisation de document.write n’aura pas d’incidence sur les performances de chargement de la page.

  

Modifiez le numéro de port au survol de la souris:

 Look at another port 

Ceci est une amélioration de https://stackoverflow.com/a/13522508/1497139 qui ne recule pas à ne pas afficher le lien correctement.

Sans JavaScript, vous devrez vous fier à certains scripts côté serveur. Par exemple, si vous utilisez ASP, quelque chose comme …

 :8080">Look at the other port 

devrait marcher. Cependant, le format exact dépendra de la technologie que vous utilisez.

Après avoir lutté avec cela, j’ai trouvé que SERVER_NAME est une variable réservée. Donc, si vous êtes sur la page (www.example.com:8080), vous devriez pouvoir supprimer le 8080 et invoquer un autre port. Par exemple, ce code modifié vient de fonctionner pour moi et me déplace de n’importe quel port de base vers le port 8069 (remplacez votre port si nécessaire)

  

Pas besoin de javascript compliqué: insérez simplement un noeud de script après votre ancre, puis récupérez le noeud en javascript et modifiez sa propriété href avec la méthode window.location.origin .

  Look at the other port  

La propriété id doit avoir une largeur de page unique. Vous pouvez donc utiliser une autre méthode pour récupérer des objects de noeud.

Testé avec Apache et Firefox sous Linux.

Basé sur la réponse de Gary Hole , mais modifie les URL sur le chargement de la page plutôt que sur le clic.

Je voulais montrer l’URL en utilisant css:

 a:after { content: attr(href); } 

J’ai donc eu besoin que le href de l’ancre soit converti pour contenir l’URL réelle qui serait visitée.

 function fixPortUrls(){ var nodeArray = document.querySelectorAll('a[href]'); for (var i = 0; i < nodeArray.length; i++) { var a = nodeArray[i]; // a -> eg: Test var port = a.getAtsortingbute('href').match(/^:(\d+)(.*)/); //port -> ['8080','https://stackoverflow.com/test/blah'] if (port) { a.href = port[2]; //a -> Test a.port = port[1]; //a -> Test } } } 

Appelez la fonction ci-dessus lors du chargement de la page.

ou sur une seule ligne:

 function fixPortUrls(){var na=document.querySelectorAll('a[href]');for(var i=0;i 

(J'utilise for au lieu de forEach donc ça marche dans IE7.)

Il est préférable de générer l’url côté serveur:

 // PHP:  // ASP.net  

Cette solution me semble plus propre

  Link to some other port on the same host