Какие методы javascript / jquery вы регулярно кодируете на своих сайтах? - PullRequest
10 голосов
/ 20 декабря 2010

Я кодирую основной объект javascript для своего сайта, встраивая общие методы, которые я использую (и также оборачивая несколько методов jQuery).

Он построен так:

var Core = {
  baseUrl: '/',
  lang: 'en-us',
  loggedIn: false,

  msg: function(str) {
    for (var i = 1, len = arguments.length; i < len; ++i) {
      str = str.replace("{" + (i - 1) + "}");
    }
    return str;
  },
  include: function(url, success, cache) {
    $.ajax({
      url: url,
      dataType: 'script',
      success: success,
      cache: cache !== false
    });
  },
  etc...
}

msg - это метод, имитирующий C # String.Format, include позволяет мне асинхронно извлекать сценарии.Есть и другие ( formatDate : преобразует строку даты и времени в местное время пользователя, getBrowser : получает типы браузеров на основе обнаружения функций, open : открывает ссылку в новомокно и т.д ...)

Этот основной объект позволяет мне выполнять широкий спектр задач ... просто вызывая Core. метод ... перемещая почти весь мой код JavaScript вфайл .js, который можно кэшировать.

Просто из любопытства, какие общие функции вы встраиваете в свои сайты?

Ответы [ 5 ]

4 голосов
/ 22 декабря 2010

Функция регистрации - это первое, что я добавляю, если не могу начать с Образец Пола Айриша .

// usage: log('inside coolFunc',this,arguments);
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
window.log = function(){
  log.history = log.history || [];   // store logs to an array for reference
  log.history.push(arguments);
  if(this.console){
    console.log( Array.prototype.slice.call(arguments) );
  }
};
3 голосов
/ 20 декабря 2010

Я обычно добавляю оболочку для перехвата любых страниц ошибок.

ajaxErrorHandle: function (data, container) {
        if (data.indexOf("Server Error in '/' Application") != -1) {
            container.html(data);
            $('.ajax-loader').hide();
            return false;
        }
        return true;
    }
2 голосов
/ 20 декабря 2010

Я использую некоторые функции форматирования строк, которые похожи на другие языки. Использование:

var s = 'Hello {0}!'.format('World'); // result is "Hello World!"
var person = { Name: 'Will' };
var greeting = 'Hello {Name}!'.formatWith(person); // result is "Hello Will!";

А вот и определения функций. Я также использую простые версии карт и сокращаю их повсеместно, не столько на внешних сайтах, сколько в интрасети, я полностью использую Javascript.

String.prototype.format = function ()
{
    var pattern = /\{\d+\}/g;
    var args = arguments;
    return this.replace(pattern, function (capture) { return args[capture.match(/\d+/)]; });
}

String.prototype.formatWith = function (obj, clean)
{
    return this.replace(/\{(.*?)\}/gim, function (all, match) { return obj[match]; });
}

function reduce(fn, a, init, limit)
{
    var s = init;
    var l = (limit == undefined) ? a.length : Math.min(a.length, limit);
    for (i = 0; i < l; i++)
        s = fn(s, a[i], i);
    return s;
}

function map(fn, a)
{
    var l = a.length;
    for (i = 0; i < l; i++)
        a[i] = fn(a[i]);
}
1 голос
/ 22 декабря 2010

Я использую некоторые удобные методы, обрабатываю динамические темы, собираю информацию о клиентах для отчетов об ошибках и решаю проблемы с темами .NET Postbacks в моем ядре. Вот пара фрагментов ...

    /**
    *   A convenience method for notifications that can be 
    *   called anywhere in the app, in place of standard 
    *   javascript alerts.  Assuming you define CSS for 
    *   the ID and/or are using jQuery UI, these alerts 
    *   are skinned.
    *
    *   @param string - the message that you want to display
    *   @example - alert('Hello World');
    */
    alert: function(msg) {
        $('body').append('<div id="alert">' + msg + '</div>');
        $('#alert').dialog({
            bgiframe: true
            , modal: true
            , width: 400
            , buttons: {
                Ok: function() { $(this).dialog('destroy'); }
            }
        });
        return this;
    } // EO alert


    /**
    *   .NET Event Handlers
    *   When new code is added on to the client by way of
    *   .NET PostBacks, CSS is typically ignored.  This method
    *   can be used to add CSS to new elements as they are added
    *   asynchronously.  It calls a script at the end of every 
    *   partial post back request.
    *
    *   @example - Core.NETEventHandlers.AsyncPostBack.Init();
    */
    , NETEventHandlers: {
        /**
        *   Async Post Back Handler
        *   calls a script at the end of every partial post back request
        */          
        AsyncPostBack: {
            EndRequest: {
                Add: function() {
                    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(Core.NETEventHandlers.AsyncPostBack.EndRequest.Handler); // where Core.NET... leads to this method
                } // EO Add
                , Handler: function(sender, args) {
                    // Handlers here.  Consider adding them into a separate method
                    alert('Hello World');
                } // EO Handler
            } // EO endRequest
            , Init: function() {
                Sys.Application.add_init(Core.NETEventHandlers.AsyncPostBack.EndRequest.Add);   // where Core.NET... leads to this method
            }
        } // EO AsyncPostBack
    } // EO dotNETEventHandlers
0 голосов
/ 20 декабря 2010

У меня был отличный междоменный ajax с потрясающей оберткой, к сожалению, я потерял его на данный момент, пока не смогу восстановить свой HD. Это было что-то вроде этого:

ajax = function(site, callback) {
    $.getScript('get.php?url=' + escape(site) + '&callback=' + callback);
}

ajax.find = function(url) {
    ret = [];
    if (url.match) {
        for (var i = 0; i < this.length; i++)
            if (url.match(this[i].url))
                ret.push(this[i]);
    }
    else
        for (var i = 0; i < this.length; i++)
            if (url === this[i].url)
                ret = this[i];
    return ret;
};

Я делаю это по памяти вещей, которые я когда-то писал давно, но вы поняли

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...