Не удается прочитать «Google» из объекта в JavaScript - PullRequest
0 голосов
/ 01 февраля 2012

Я написал скрипт, который обнаруживает URL-адрес, на который ссылаются несколько поисковых систем, а затем передает это значение (не переменную mc_u20) на сервер, который где-то будет использоваться. Сценарий работает как удовольствие, за исключением одной большой проблемы, он просто не будет отслеживать результаты поиска Google. Поэтому любой результат, который приходит от Google, просто не регистрируется. Вот скрипт:

var mc_searchProviders = {"search_google":"google.co","search_bing":"bing.com","search_msn":"search.msn","search_yahoo":"search.yahoo","search_mywebsearch":"mywebsearch.com","search_aol":"search.aol.co", "search_baidu":"baidu.co","search_yandex":"yandex.com"}; 
var mc_socialNetworks = {"social_facebook":"facebook.co","social_twitter":"twitter.co","social_google":"plus.google."}; 
var mc_pageURL = window.location +'';
var mc_refURL = document.referrer +'';

function mc_excludeList() {
if (mc_refURL.search('some URL') != -1) {
    return false; //exclude some URL
}
if (mc_refURL.search('mail.google.') != -1) {
    return false; //exclude Gmail
}
if (mc_refURL.search(mc_paidSearch) != -1) { 
    return false; //exclude paidsearch
}
else {
    mc_checkURL(); 
}
}

mc_excludeList();

function mc_checkURL() {
    var mc_urlLists = [mc_searchProviders, mc_socialNetworks], 
i,mc_u20;
for (i = 0; i < mc_urlLists.length; i++) {
    for (mc_u20 in mc_urlLists[i]) { 
    if(!mc_urlLists[i].hasOwnProperty(mc_u20))
    continue;
    if (mc_refURL.search(mc_urlLists[i][mc_u20]) != -1) {
        mc_trackerReport(mc_u20);
        return false;
    }
    else if ((mc_refURL == '') && (mc_directTracking === true)){
        mc_u20 = "direct_traffic";
        mc_trackerReport(mc_u20);
        return false;
        }
        }
    }
}

Самое неприятное, что я проверил это на своем локальном компьютере (заполнив mc_refURL фактическим URL-адресом поиска в Google, и он работает как чудо. Я также подумал, что, возможно, при поиске в первом mc_searchProviders объект как-то пропускает первый экземпляр, поэтому я добавил пустой. Но все же это не работает. Что еще более раздражает, так это то, что для любой другой поисковой системы переменная mc_u20, кажется, заполняется тем, что мне нужно .

Это сводит меня с ума. Кто-нибудь может увидеть, что здесь не так? Я мог бы также упомянуть, что я вошел в Google, но я не понимаю, как это повлияет на сценарий, так как их пост в блоге (в ноябре) сказал, что они фильтруют ключевые слова, не препятствуя передаче ссылающегося URL.

1 Ответ

1 голос
/ 01 февраля 2012

Точно, так что я понял, что происходит. Первая часть сценария исключает ваш собственный URL (см. Там, где написано 'some URL'. Скажите, что это было установлено на www.example.com. В Google, если я искал, скажем, example, и Google вернул www.example.com в качестве первого результата поиска, в ссылочном URL он будет содержать www.example.com. Следовательно, почему скрипт ломался, возможно, кто-то найдет это полезным в будущем.

...