Как определить дубликаты функций Javascript, которые включены в страницу Asp.net - PullRequest
5 голосов
/ 20 февраля 2010

У меня есть приложение, которое использует некоторые функции JavaScript,

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

Итак, я хочу проверить, есть ли способ определить дубликаты функций и удалить их?

Ответы [ 4 ]

4 голосов
/ 20 февраля 2010

Вы можете проверить, существует ли функция при объявлении функции, но Вы должны изменить способ ее работы.

вместо

function foo(){ something }

до

if(window.foo===undefined){
window.foo=function(){ something }
}

и Вы все еще можете назвать это

foo();

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

2 голосов
/ 20 февраля 2010

К сожалению, если они не называются одинаково или не ссылаются на одинаковые классы или идентификаторы, это чрезвычайно сложно. Но, если это дубликат, он должен попасть под один из этих совпадений. Я говорю это потому, что после серьезного преобразования в нашем проекте я вернулся и очистил весь javascript в красивые пространства имен, и у меня возникла та же проблема.

Этот ответ будет сосать , и я прошу прощения: Ctrl+Shift+F. Ищите те же имена функций или те же классы / идентификаторы, если вы думаете, что у них другое имя / та же функция.

Я считаю поиск по имени функции , #id и .class наиболее продуктивным. Также исключите .cs файлы из вашего поиска. Это минимизирует время, поскольку предыдущие # и . будут появляться только при использовании в jQuery, но это все еще очень ручной процесс.

Я надеюсь, что у кого-то есть лучшее решение здесь, и если они это сделают, я буду чувствовать себя идиотом, но я, честно говоря, не смог найти лучшего пути в VS 2008, чтобы сделать это.

0 голосов
/ 21 февраля 2010

Из вопроса не ясно, используете ли вы Webforms или MVC. В любом случае вы хотите использовать какой-либо менеджер скриптов.

Для MVC я обнаружил, что в этом исследовании почти такая же проблема: Простой ScriptManager для ASP.NET MVC

Для веб-форм, ну, не уверен, мне нужно снова делать домашнее задание

0 голосов
/ 20 февраля 2010

Если функции из двух сценариев имеют одинаковые имена или называются методами объекта, первая функция будет заменена второй при интерпретации второго сценария.

У вас не будет двух одинаковых функций «занимающих место», а только одна.

...