Лучше на JS парсер контакта


На сайте я писал это JS парсер контакта. Он просто считывает контакты и анализирует ссылки, если определяется известной службой. Это может быть сделано более компактным? Как насчет надежности? (он не может обрабатывать исключения, где URL-адрес начинается не с HTTP, например). Какие еще услуги я должен рассмотреть?

Здесь это jsfiddle. А код ниже:

Разметки

<div id="contacts"></div>

УСБ

span { padding: 10px; }

Яш

var contacts = 'guy@gmail.com, guy@owndomain.com, http://twitter.com/guy, http://www.facebook.com/profile.php?id=100002877203519, http://www.linkedin.com/in/coolguy, http://www.myspace.com/coolguy, skype:cool.guy?call, aim:goim?screenname=cool.guy, http://coolguy.com';
var re = / /gi;
contacts = contacts.replace(re, "");
contacts = contacts.split(',');

var picBase = 'http://jqeedu.tuxfamily.org/images/media/';

jQuery(document).ready(function() {

    for (var i = 0; i < contacts.length; i++) {
        addContact(contacts[i]);
    }

});

function addContact(c) {
    cdiv = jQuery("#contacts");
    var i = false;
    var h = '';
    var n = '';

    if(c.indexOf('@gmail.com') != -1) {
        i = 'gmail.png';
        h = 'mailto:'+c;
    }

    if(!i && c.indexOf('http://www.facebook.com/profile.php?id=') == 0) {
        i = 'facebook.png';
        h = c;
    }

    if(!i && c.indexOf('http://www.linkedin.com/in/') == 0) {
        i = 'linkedin.png';
        h = c;
    }

    if(!i && c.indexOf('http://www.myspace.com/') == 0) {
        i = 'myspace.png';
        h = c;
    }

    if(!i && c.indexOf('skype:') == 0 && c.indexOf('?call') != -1) {
        i = 'skype.png';
        h = c;
    }

    if(!i && c.indexOf('aim:goim?screenname=') == 0 ) {
        i = 'aim.png';
        h = c;
    }


    if(!i && c.indexOf('http://twitter.com/') == 0) {
        i = 'twitter.png';
        h = c;
    }

    if(!i && c.indexOf('http://') == 0) {
        i = 'website.png';
        h = c;
    }    

    if(!i) {
        i = 'email.png';
        h = 'mailto:'+c;
    }


    n = '<span><a href="'+h+'"><img src="'+picBase+i+'"></a></span>';

    cdiv.append(n);

}


183
0
задан 6 сентября 2011 в 02:09 Источник Поделиться
Комментарии
1 ответ

Во-первых, я хотел бы изменить все вхождения

}

if(!i && c.indexOf(...

для

 } else if(c.indexOf(...

Мне там, кажется, не быть никакой разницы логически и чище.

Во-вторых, я хотел бы использовать регулярные выражения для URL-адреса (я уверен, что кто-то будет комментировать, как регулярные выражения не нужны/ слишком медленно-бла-бла.)

var regexFBprofile = /^(http\:\/\/)?(www\.)?facebook\.com\/profile\.php\?id=/;
var regexLinkedIn = /^(http\:\/\/)?(www\.)?linkedin\.com\/in\//;
var regexMySpace = /^(http\:\/\/)?(www\.)?myspace\.com/;
var regexTwitter = /^(http\:\/\/)?(www\.)?twitter\.com\//;

еще одна маленькая вещь:

re = / /g;
contacts = contacts.replace re, "");

с:

contacts[i].trim();

http://jsfiddle.net/96Gk6/34/

1
ответ дан 6 сентября 2011 в 03:09 Источник Поделиться