Jquery

2016-04-06 7 views
1

kullanarak site adından site adını almak için genelleme yöntemini bulma JQuery kullanarak chrome uzantımda kullanmak için herhangi bir sitenin adını (herhangi bir alt etki alanı adı olmayan bir etki alanı adı) almaya çalışıyorum. Çoğu durumda onu bulabilirim. ama birkaç köşe durumunda başarısız oluyorum. Şimdiye kadar yaptığım işte.Jquery

host_url = window.location.hostname; 

Bu bana sadece sayfa url, sümüklü böcek veya params sıyırma adını barındırmak verir

https://ap2.salesforce.com/_ui/core/chatter/ui/ChatterPage -> 
    ap2.salesforce.com 

    http://go.sap.com/support.html -> go.sap.com 

    http://www.beaf.com/ -> beaf.com 

http://www.digitalclicks.co.uk -> digitalclicks.co.uk 

ama nasıl alt alan kaldırmak için ben almak bölmek ve elde edebilirsiniz, çünkü sadece alan adına alabilirsiniz burada alanı adı ilk olduğu için, salesforce, sap, beaf

if (full_domain.split(".").length > 2){ 
    domain_name = full_domain.split(".")[1]; // handle the subdomain ie. http://go.sap.com 
    }else{ 
    domain_name = full_domain.split(".")[0]; //for no subdomain www.beaf.com 
    } 

Ama digitalclicks.co.uk için başaramıyorum bana verecek 2 unsur. Bunu çözmek için genel bir yaklaşım bulmalıyım. Ve bunu tüm Üst Düzey Etki Alanları için nasıl yapabilirim?

+1

görünüyor - bu sadece en sağdaki parçası - senin örneklerde onunla, "com" ve "uk" is " co.uk "İkinci düzey alan adı. https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains –

+0

url ile ilgili olarak örneklerinizdeki ** uk **/** com ** üst düzeydir, ** beaf **/** sap **/** salesforce **/** co ** ikinci seviye. Bu durumda, senin de ** digitalclicks ** aslında bir alt alan. Bazı 2. düzey alanların ülkeye özgü kullanımlar için ayrılacağı kesindir. –

+0

Bunu, host_url .. üst düzey etki alanı/url uzantısını kaldırarak alabilirsiniz (.com, .co.uk vb. Kaldır). Şimdi dizenin son kısmı ('.' Ile bölünmüş) istediğiniz dize olacak –

cevap

1

Herhangi bir URL'den alan adı ayıkla. http://www.alan-adı.co.uk/sub1/sub2/...

Bu işler:

  1. adım: o http(s)://
  2. adımın kurtulur: her şeyin kurtulur "/"
  3. arkasında "."
  4. tarafından bölünmüş bir dizi oluşturuyor
  5. "uk" "" adresinden kurtulmak için dizinin uzunluğunu 3'e keser.
  6. array öğelerini tersine çevirin, çünkü etki alanı adı [1] olmalıdır.
    url
    (alt alan adı olmadan) domainname.com gibi olabilir, çünkü bunu yapmak zorunda

düzenleme: yapmaması halinde, bu + "/" eklemeniz gerekir hat 1'de orada hiçbir URL'de eğik çizgi.
Ancak, alt dizeyi elde etmek için sonraki adımda bir eğik çizgiye ihtiyacımız var. Eğer bir "üst düzey alan" ne yanlış anlıyorsun gibi

function getDomainName(url) { 
 
    var _x = url.replace(/\w+:\s?\/\//.exec(url), "") + "/"; 
 
    var __x = _x.substring(0, _x.indexOf("/")); 
 
    var __xRev = __x.split("."); 
 
    if (__xRev.length > 3) { 
 
    __xRev.pop(); 
 
    } 
 
    __xRev.reverse(); 
 
    return __xRev[1]; // <-- __xRev[1] is the domainname 
 
} 
 

 
document.write(getDomainName(prompt("please enter url")));

+0

Ben sonuç almak mümkün olmuştur 'ap2.salesforce.com go.sap.com beaf.com digitalclicks.co.uk' ama sadece eğer (progmatically özsuyu, digitalclicks, sığır eti, salseforce istiyorum bir kelimedir). –

+0

Teşekkürler @John, hızlı bir kontrol yapalım. –

+0

@AkashShah Şimdi bu bence her durumda işe yarayacak. – John