如何从JavaScript中的URL中删除“http://”

时间:2011-11-21 01:14:37

标签: javascript regex bookmarklet

我遇到了一个奇怪的情况。我正在编写一个JavaScript书签,允许用户轻松快速地点击并共享外部网站到我们的网站。它只是得到标题,页面URL,如果他们在页面上选择了任何文本,它也会抓住它。

问题是它由于某种原因无法与外部域一起使用,因此如果我们在内部使用它,我们最终会得到一个共享窗口,其URL格式如下:

http://internaldomain.com/sharetool.php?shareid=http://internaldomain.com/anotheroddpage.html&title= ....

这很好用,但是如果我们尝试使用外部域并最终得到这样格式的网址:

http://internaldomain.com/sharetool.php?shareid=http://externaldomain.com/coolpagetoshare.html&title= ...

然后我们在页面上收到 Forbidden Error 并且无法加载...如果我们从externaldomain地址手动删除http://,它会再次加载。< / p>

所以......我认为解决这个问题的最佳解决方案是修改JavaScript书签,以便在加载窗口时删除http。以下是我当前的书签的外观:

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)+

如您所见,e(l.href)是传递URL的位置。

如何修改它以删除外部域http://

5 个答案:

答案 0 :(得分:120)

我认为考虑所有可能的协议会更好。

result = url.replace(/(^\w+:|^)\/\//, '');

答案 1 :(得分:40)

url = url.replace(/^https?:\/\//,'')

答案 2 :(得分:6)

l.href.replace(/^http:\/\//, '')

答案 3 :(得分:2)

我认为你需要的正则表达式是/(?:http://)(.*)/i。这应该是第一场比赛。

答案 4 :(得分:-4)

尝试使用replace功能

var url = url.replace("http%3A%2F%2F", "");