J'ai rencontré une situation étrange. J'écris un bookmarklet JavaScript qui permettra aux utilisateurs de cliquer et de partager des sites Web externes sur notre site Web très facilement et rapidement. Il obtient simplement le titre, l'URL de la page et s'ils ont sélectionné du texte sur la page, il le saisit également.
Le problème est qu'il ne fonctionne pas avec des domaines externes pour une raison quelconque, donc si nous l'utilisons en interne, nous nous retrouvons avec une fenêtre de partage avec l'URL formatée comme ceci:
http://internaldomain.com/sharetool.php?shareid=http://internaldomain.com/anotheroddpage.html&title= ....
Cela fonctionne très bien, MAIS si nous essayons d'utiliser un domaine externe et de nous retrouver avec une URL formatée comme ceci:
Ensuite, nous obtenons une erreur interdite sur notre page et ne pouvons pas la charger ... Si nous supprimons manuellement le http://
Du domaine externe adresse, il se charge à nouveau très bien.
Donc .. je pense que la meilleure solution pour contourner ce problème est de modifier le bookmarklet JavaScript pour supprimer le http
lors du chargement de la fenêtre. Voici à quoi ressemble mon bookmarklet actuel:
javascript:var d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='http://internaldomain.com/sharetool.php',l=d.location,e=encodeURIComponent,u=f+'?u='+e(l.href)+
Comme vous pouvez le voir, e(l.href)
est l'endroit où l'URL est transmise.
Comment puis-je le modifier pour supprimer les domaines externes http://
?
Je pense qu'il vaudrait mieux prendre en compte tous les protocoles possibles.
result = url.replace(/(^\w+:|^)\/\//, '');
url = url.replace(/^https?:\/\//,'')
l.href.replace(/^http:\/\//, '')
Je pense que l'expression régulière dont vous avez besoin est /(?:http://)(.*)/i
. Le premier match devrait être ça.