2015-05-28 14 views
5

Mam obecnie 4 różne javascripty do śledzenia reklam. Wyglądają tak:Potrzebuję kodu JavaScript do zmiany klucza śledzenia reklamy opartego na subdomenie o podanej nazwie

<script type='text/javascript'> var TrackerKey = 'keyabc123'; var url = 'http://website.com/jscode.js'; var script = document.createElement('script'); script.setAttribute('src', url); script.setAttribute('type', 'text/javascript'); document.body.appendChild(script);</script> 

chcę połączyć wszystkie 4 i po prostu swap klucz tracker w oparciu off nazwę domeny sub Są na.

Do tej pory udało mi się ustalić, że użyłbym window.location.hostname, aby znaleźć domenę. I prawdopodobnie użyłbym instrukcji switch lub jeśli/else podejście.

Nie mam wystarczająco dużo doświadczenia, aby wiedzieć, w jaki sposób przekazać informacje o tym, jaka domena jest zmienną dla instrukcji switch, a następnie użyć jej do aktualizacji zmiennej kluczowej tracker.

Przypuszczam, może to wyglądać jak na poniższym ...

<script type='text/javascript'> 

var domain = window.location.hostname; 

var TrackerKey; 
switch (???) { 
    case 0: 
     sub.domain1.com = "keyabc123"; 
     break; 
    case 1: 
     sub.domain2.com = "keydef456"; 
     break; 
    case 2: 
     sub.domain3.com = "keyghi789"; 
     break; 
    case 3: 
     sub.domain4.com = "keyjkl012"; 
     break; 
} 

var url = 'http://website.com/jscode.js'; var script = document.createElement('script'); script.setAttribute('src', url); script.setAttribute('type', 'text/javascript'); document.body.appendChild(script);</script> 

Am I zdalnie na właściwej ścieżce?

Przepraszam, to moje pierwsze ukłucie w coś poza podstawami.

+0

Twoja sprawa powinna również odzwierciedlać nazwę hosta, do której pasuje, np. "Case" www.yahoo.com ": ... break; case 'videos.yahoo.com': ... break; ' –

+0

Jak wyglądają twoje subdomeny w adresie URL i ich kluczach? – MaxZoom

Odpowiedz

3

jesteś blisko:

var domain = window.location.hostname; 

var TrackerKey; 
switch (domain) { 
    case "sub.domain1.com": 
     TrackerKey = "keyabc123"; 
     break; 
    case "sub.domain2.com": 
     TrackerKey = "keydef456"; 
     break; 
    case "sub.domain3.com": 
     TrackerKey = "keyghi789"; 
     break; 
    case "sub.domain4.com": 
     TrackerKey = "keyjkl012"; 
     break; 
} 

także umownie w JavaScript, nazwy zmiennych i funkcji są camel case wychodząc z małej charakteru i klasy są camelCase zaczynając charakterze kapitałowym.

+0

Dziękuję bardzo, proszę pana. Srebrna odpowiedź na punktor. Zrobiłem mały document.getElementById ("test"). InnerHTML = TrackerKey; przetestować i zwraca wartości tak, jak powinny. Aż do serwera idzie na więcej testów, ale myślę, że będzie dobrze. – Chirpie

1

var subdomain = window.location.hostname.match(/(http:\/\/)?(([^.]+)\.)?domain\.com/)[3]

Change 'domeny' powyżej do domeny, a następnie użyć

var TrackerKey; 
switch(subdomain) { 
    case 'abc': //abc.domain.com 
     TrackerKey = 'abc123'; 
     break; 
} 

A potem zrobić swoje zwykłe wkładki skryptu.

Regex ref: Regex to extract subdomain from URL?

0

myślę, że to powinno wystarczyć:

function trackerKey(url){ 
    var d = url.replace(/^((ht|f)tps?\:\/\/)?(www\.)?([^.]+).+$/i, '$4').toLowerCase(); 
    switch(d){ 
    case 'vancouver': 
     return 'someKey1'; 
    case 'portland': 
     return 'someKey2'; 
    case 'seattle': 
     return 'someKey3'; 
    case 'losangeles': 
     return 'someKey4'; 
    default: 
     return 'someKey'; 
    } 
} 
console.log(trackerKey(location)); 

Jeśli prowadził ten kod na seattle.craigslist.org byś zobaczyć someKey3 w konsoli. Podobnie, vancouver.craigslist.ca dałoby Ci someKey1. Oczywiście będziesz musiał pracować dla Craigslist, aby uruchomić powyższy kod. To tylko ilustracja. Przy okazji, zwykle uważam, że nie ma sensu zwracać klucza lub tworzyć klucza na podstawie znanych informacji po stronie klienta. Powinieneś obsługiwać szyfrowanie Sever Side. Zauważ, że nie musisz wpisywać window., ponieważ jest to niejawne.

Powiązane problemy