没有www的Javascript location.host

1BJ*_*903 7 javascript

我有一个php文件,用于在Facebook和Twitter上分享我的用户的帖子.例如,如果我点击Twitter图标,我会看到一个屏幕,其中自动编写了指向我网站的超链接.这很好,但我想删除www.自动显示在Twitter屏幕上的网址部分.我想这与location.host有关,所以我用Google搜索,但我找不到这个问题的正确答案.

这是我的代码示例:

function e(f,i,an)
{
        with(document)
        {
                write('<div style="width:100%"><table id=m'+i+' style="visibility:hidden"><tr>');
                write('<td id="vst' + i + '" style="white-space:nowrap">&nbsp;</td>');
                write('<td hr(this.childNodes[0])" title="share on facebook"><a href="javascript:od(\'http://www.facebook.com/sharer.php?u=' + location.host + '/e/'+ i +'\',900,400)" class=icon><img src="images/facebook.png" target="_blank"></a></td>');
        write('<td hr(this.childNodes[0])" title="share on twitter"><a href="javascript:od(\'http://twitter.com/home?status=' + location.host + '/e/'+ i +' - %20read!\',800,600)" class=icon><img src="images/twitter.png" target="_blank"></a></td>');
                write('<td class=ei><a name="cid'+i+'"></a><a href="e/'+i+'">( #'+i+' )</a></td>'); 

                  document.write('<td>&nbsp;</td>');
Run Code Online (Sandbox Code Playgroud)

我的第二个问题是:如何在Twitter屏幕上添加自定义标题:例如,我的网站名称,而不必将location.host与正在共享的TOPICNAME的标题一起使用?

Ber*_*rgi 10

如果您只想获得二级和顶级域名,而不是任何子域名,这可以帮助您:

var url = location.host; // e.g. "www.example.com"
return url.split(".").slice(-2).join("."); // "example.com"
Run Code Online (Sandbox Code Playgroud)

这也适用于其他子域,甚至超过三个以上的子域.


Bil*_*oon 9

对于你的第一个......你可以修改主机:

location.host.replace('www.','')
Run Code Online (Sandbox Code Playgroud)

编辑:地址问题

在第一次评论中再次投票,看到很多上升票,我将试图解决对除了www包含的子域之外的关注www......

仍然没有针对这个解决方案的正则表达式,主要是因为通常很难维护正则表达式,并且有很多开发人员根本不接触正则表达式...

var cleaned_host;
if(location.host.indexOf('www.') === 0){
    cleaned_host = location.host.replace('www.','');
}
// do something with `cleaned_host`
Run Code Online (Sandbox Code Playgroud)

......或者更简洁......

location.host.indexOf('www.') && location.host || location.host.replace('www.', '');
// evaluates to hostname with starting `www.` removed
Run Code Online (Sandbox Code Playgroud)

  • 甚至可以制作`location.host.replace(/ ^ www\./,'')`,这样`www.只能从主机名的_beginning_中删除.但除非你的主机名恰好像[`no-www.org`](http://no-www.org/),否则这不太可能有任何区别. (9认同)