J'ai l'URL http://somesubdomain.domain.com (sous-domaines peuvent varier, le domaine est toujours le même). Besoin de prendre sous-domaine et recharger la page avec quelque chose comme domain.com/some/path/here/somesubdomain en utilisant greasemonkey (ou ouvrir une nouvelle fenêtre avec l'URL domain.com/some/path/here/somesubdomain, peu importe).Obtenir sous-domaine et le charger à l'URL avec greasemonkey
Répondre
var full = window.location.host
//window.location.host is subdomain.domain.com
var parts = full.split('.')
var sub = parts[0]
var domain = parts[1]
var type = parts[2]
//sub is 'subdomain', 'domain', type is 'com'
var newUrl = 'http://' + domain + '.' + type + '/your/other/path/' + subDomain
window.open(newUrl);
La réponse fournie par Derek travaillera dans les cas les plus courants, mais ne fonctionnera pas pour « xxx.xxx » sous-domaines ou « host.co.uk ». (aussi, en utilisant window.location.host, va également récupérer le numéro de port, qui n'est pas traité: http://www.w3schools.com/jsref/prop_loc_host.asp)
Pour être honnête, je ne vois pas une solution parfaite pour ce problème. Personnellement, j'ai créé une méthode de fractionnement du nom d'hôte que j'utilise très souvent car elle couvre un plus grand nombre de noms d'hôtes.
Cette méthode divise le nom d'hôte dans {domain: "", type: "", subdomain: ""}
function splitHostname() {
var result = {};
var regexParse = new RegExp('([a-z\-0-9]{2,63})\.([a-z\.]{2,5})$');
var urlParts = regexParse.exec(window.location.hostname);
result.domain = urlParts[1];
result.type = urlParts[2];
result.subdomain = window.location.hostname.replace(result.domain + '.' + result.type, '').slice(0, -1);;
return result;
}
console.log(splitHostname());
Cette méthode ne retourne que le sous-domaine en tant que chaîne:
function getSubdomain(hostname) {
var regexParse = new RegExp('[a-z\-0-9]{2,63}\.[a-z\.]{2,5}$');
var urlParts = regexParse.exec(hostname);
return hostname.replace(urlParts[0],'').slice(0, -1);
}
console.log(getSubdomain(window.location.hostname));
// for use in node with express: getSubdomain(req.hostname)
Ces deux méthodes fonctionnent pour les domaines les plus courants (y compris co.uk) NOTE: le slice
à la fin des sous-domaines est de supprimer le point supplémentaire.
J'espère que cela résout votre problème.
Meilleure et la réponse la plus précise que j'ai trouvé, merci – webdevinci
J'ai utilisé la solution Dereks et ai eu des ennuis quand je n'ai soudainement pas ' t avoir un sous-domaine. Vlads répond mieux dans mon cas. – MartinJH
Les solutions fournies ici fonctionnent parfois, ou même la plupart du temps, mais pas partout. Au meilleur de ma connaissance, la meilleure façon de trouver le sous-domaine complet de domaine (et n'oubliez pas, parfois sous-domaines ont des périodes dans eux aussi! Vous pouvez avoir sous-sous-domaines, etc) est d'utiliser le Public Suffix List, qui est maintenu par Mozilla.
La partie de l'URL qui ne figure pas dans la liste publique des suffixes est le sous-domaine plus le domaine lui-même, joint par un point. Une fois que vous avez supprimé le suffixe public, vous pouvez supprimer le domaine et laisser uniquement le sous-domaine en supprimant le dernier segment entre les points.
Regardons un exemple compliqué. Dites que vous testez sub.sub.example.pvt.k12.ma.us
. pvt.k12.ma.us
est un suffixe public, croyez-le ou non! Donc, si vous utilisiez la liste des suffixes publics, vous seriez en mesure de transformer rapidement cela en sub.sub.example
en supprimant le suffixe connu. Ensuite, vous pouvez passer de sub.sub.example
à sub.sub
après avoir enlevé la dernière partie des pièces restantes, qui était le domaine. sub.sub
est votre sous-domaine.
- 1. javascript et greasemonkey question
- 2. Comment charger un script greasemonkey après AJAX-Request
- 3. Greasemonkey Script et fonction Portée
- 4. iframe indéfini dans le script Greasemonkey
- 5. Greasemonkey et Gmail - analyser le contenu des messages
- 6. GreaseMonkey Script
- 7. Sauvegarder et charger le fichier XML avec flex
- 8. Suppression d'éléments de liste avec Greasemonkey
- 9. édition Greasemonkey page
- 10. Force iframe à charger le plein cadre
- 11. Comment charger et swf externe et gotoAndPlay() avec un bouton
- 12. Greasemonkey jQuery problème de portée
- 13. Script Greasemonkey pour télécharger plusieurs images?
- 14. charger et décharger le film dans le script flash
- 15. Cliquez sur le bouton et charger le contrôleur de navigation
- 16. Quelle fonction de copie d'objet JavaScript fonctionne avec greasemonkey?
- 17. Comment obtenir webrat/sélenium pour "attendre" le CSS de la page à charger?
- 18. Compatibilité du script Greasemonkey avec Firefox, Safari, Opera et chrome (événement onload)
- 19. Diviser le contenu des variables et charger dans le tableau avec php
- 20. Scripts d'opéra et états de stockage (comme GM_SetValue dans greasemonkey)
- 21. Comment charger les fichiers EPS et les dessiner avec WinForms
- 22. peut Greasemonkey causer le titre affiché pour changer
- 23. Greasemonkey \ JavaScript Copier dans le presse-papiers bouton
- 24. Charger un javascript et l'exécuter
- 25. Comment intercepter XMLHttpRequests à partir d'un script Greasemonkey?
- 26. CKEDITOR non défini par mon script Greasemonkey?
- 27. Comment inclure cluetip dans un script GreaseMonkey
- 28. Comment obtenir des autotools à compiler avec le compilateur Intel?
- 29. Charger le swf frais du serveur
- 30. Comment simuler un clic sur l'ancre avec un texte spécifique en utilisant javascript dans GreaseMonkey?
Merci, ça marche! –
Que faire si le domaine est google.co.uk? Cela retournera le mauvais sous-domaine. – TLK
Pour obtenir uniquement le sous-domaine: window.location.host.split ('.') [0]; –