2015-05-28 14 views
5

Tôi hiện đang có 4 javascripts khác nhau để theo dõi quảng cáo. Họ trông giống như thế này:Cần Javascript để thay đổi khóa trình theo dõi quảng cáo dựa trên tên miền phụ

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

Tôi muốn kết hợp tất cả 4 và chỉ cần có khóa theo dõi hoán đổi dựa trên tên miền phụ họ đang truy cập.

Vì vậy, đến nay tôi đã có thể tìm ra rằng tôi sẽ sử dụng window.location.hostname để tìm tên miền là gì. Và tôi có lẽ sẽ sử dụng một tuyên bố chuyển đổi hoặc nếu/cách tiếp cận khác.

Tôi chưa đủ kinh nghiệm để biết cách chuyển thông tin về tên miền như một biến cho báo cáo chuyển đổi, sau đó sử dụng để cập nhật biến khóa theo dõi.

tôi cho rằng nó có thể trông giống như sau ...

<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 Tôi từ xa trên con đường đúng đắn?

Xin lỗi, đây là lần đầu tiên tôi đâm vào thứ gì đó ngoài những điều cơ bản.

+0

Trường hợp của bạn cũng phải phản ánh tên máy chủ phù hợp, ví dụ: 'case 'www.yahoo.com': ... break; case 'videos.yahoo.com': ... break; ' –

+0

Tên miền phụ của bạn trông như thế nào trong URL và khóa của chúng? – MaxZoom

Trả lời

3

Bạn đang gần:

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; 
} 

Cũng theo quy ước trong Javascript, biến và chức năng tên là trường hợp lạc đà bắt đầu với một nhân vật chữ thường, và lớp học được camelCase bắt đầu với một nhân vật vốn.

+0

Cảm ơn bạn rất nhiều. Câu trả lời bằng dấu đầu dòng. Tôi đã làm một chút document.getElementById ("test"). InnerHTML = TrackerKey; để kiểm tra và nó trả về giá trị như nó cần. Lên đến máy chủ nó đi để thử nghiệm nhiều hơn, nhưng tôi nghĩ rằng nó sẽ làm việc tốt. – Chirpie

1

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

Change 'miền' ở trên để tên miền của bạn và sau đó sử dụng

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

Và sau đó làm kịch bản chèn thông thường của bạn.

Regex ref: Regex to extract subdomain from URL?

0

Tôi nghĩ rằng điều này sẽ làm điều đó:

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

Nếu bạn chạy mã này ở seattle.craigslist.org bạn sẽ thấy someKey3 trong giao diện điều khiển của bạn. Tương tự, vancouver.craigslist.ca sẽ cung cấp cho bạn someKey1. Tất nhiên, bạn phải làm việc cho craigslist để chạy đoạn mã trên. Đây chỉ là một minh họa. Nhân tiện, tôi thường thấy nó vô nghĩa khi trả lại chìa khóa hoặc tạo ra một khóa dựa trên thông tin về phía Khách hàng đã biết. Bạn nên xử lý mã hóa Sever Side. Lưu ý rằng bạn không phải nhập window. vì nó ẩn.

Các vấn đề liên quan