Нужно изменить имя функции в JS, стараясь не дать ей взломать - PullRequest
0 голосов
/ 29 февраля 2012

Я не гуру javascript, мне приходится дважды вызывать внешний файл JS на одной странице. Файл JS включает в себя функцию. Вызов этой функции дважды (по одному в каждом включении JS) нарушает функциональность. Поэтому я решил изменить второй экземпляр на другое имя функции. Это работает, чтобы позволить первому экземпляру работать правильно, но разбивает второй (тот, у которого изменена функция).

Имя функции - это адрес, и я пытаюсь точно определить, что еще нужно изменить в этом скрипте, чтобы отразить изменение имени. Я боюсь, что есть другие упоминания «адреса», которые являются законными и не связаны с именем функции. Я в своем уме и просто не уверен. Кто-нибудь хочет взглянуть на этот JS и помочь мне найти, какие экземпляры слова address нужно изменить, чтобы правильно отразить одну функцию и имя переменной?

/**
 * execute part
 */
$(document).ready(function(){
    address.bindZipcodeFind();
});


var address = {
    bindZipcodeFind: function(){
        $('.zipcode-searcha').click(function(){
            $('.zipcode-search-resulta').text("로딩중...");
            $.get('http://www.nuvonoir.com/postalcode2/zipsearch-action.php',{
                query: $('#dongNamea').val()
            },function(data){
                $('.zipcode-search-resulta').html(data);
                address.bindPutAddress();
            })
        });
    },
    bindPutAddress: function(){
        $('.zipcode-search-resulta a').click(function(){
            $('[id=zipcode1a]').val($(this).parent().parent().find('.postcd1').text());
            $('[id=zipcode2a]').val($(this).parent().parent().find('.postcd2').text());
            $('[id=OrdAddra]').val(address.remove_useless_addr($(this).parent().parent().find('.address').text()));
            address.hideZipcodeFinder();
            $('[name=addr]').focus();
            return false;
        });
    },
    remove_useless_addr: function(address){
        if(address.indexOf('~') != -1){
            address = address.split(' ').slice(0,-1).join(' ');
        }
        return address;
    },
    hideZipcodeFinder: function(){
        $('.zipcode-findera').slideUp();
    }
}

1 Ответ

0 голосов
/ 29 февраля 2012

Если у вас нет способа уменьшить количество включений кода дважды, тогда есть единственный вариант: написать, что функция была вызвана в другом месте:

  • глобальная переменная
  • невидимый элемент с определенным идентификатором

или даже больше волшебных вещей:

  • поле в document объекте или корневом узле документа (html/body)
  • хэш местоположения (часть URL после #)
  • cookie / sessionStorage на основе document.lastModified (оно равно времени генерации страницы на сервере) или чего-либо, что остается стабильным в течение одной загрузки страницы.

Пример использования глобальной переменной:

function once() {
   if (window.myOnceFuncIsCalled) return;
   // do the main work
   window.myOnceFuncIsCalled = true;
}
...