#javascript #c# #ajax #asp.net-ajax
Вопрос:
Поэтому я просто уменьшал, используя AjaxMin.dll в моем проекте при каждой сборке/развертывании для всех файлов js/css с настройками по умолчанию. Это оказалось плохой идеей. В одном из сторонних файлов javascript, которые у нас есть, есть хороший оператор eval со ссылками на некоторые переменные или параметры. Когда он уменьшается, исходные переменные переименовываются и не переименовываются в операторе eval. Это вызвало большую старую ошибку в производстве (FML).
Я решил, что мне нужно выбрать более безопасные настройки для процесса минимизации.
Документация по AjaxMin очень ммм неясна. http://www.asp.net/ajaxlibrary/AjaxMinWithAndEval.ashx
Или, может быть, я просто этого не понимаю. Я использую код (с DLL), а не командную строку.
У CodeSettings
EvalTreatment
класса есть опция класса, но я не уверен, какой вариант лучше выбрать…
Из Microsoft (источник DLL):
using System;
namespace Microsoft.Ajax.Utilities
{
public enum EvalTreatment
{
Ignore = 0,
MakeImmediateSafe = 1,
MakeAllSafe = 2,
}
}
Я думаю MakeImmediateSafe
(1) или MakeAllSafe
(2)? Что вы, ребята, думаете?
Заранее спасибо!
Комментарии:
1. У меня была аналогичная проблема, когда я использовал Ajax.Net (старая версия), и я уменьшал его общий javascript, который содержал строку:
eval("r=" ....
и я изменил егоr=eval("r=" ...
, что исправило его для меня.
Ответ №1:
Если вы хотите быть абсолютно уверены, что уменьшенные результаты всегда будут работать, используйте опцию MakeAllSafe. Это гарантирует, что никакие переменные ни в области оператора eval, ни в каких-либо родительских областях не будут переименованы.
Комментарии:
1. Да, я закончил тем, что сделал это. Сделал CssComment. Все так же хорошо для режима комментариев на CSS. Вы создали поистине потрясающую библиотеку классов. Спасибо!.