Я создал файл externs, чтобы иметь возможность скомпилировать плагин jQuery Star Rating Plugin fyneworks.com/jquery/star-rating/#tab-Testing с ADVANCED_OPTIMIZATIONS компилятора Google Closure.
Но, несмотря на то, что я ссылаюсь на стандартный jQuery extern, знак «$» переименовывается, что нарушает работу плагина.
Возможно, это связано с тем, что если я использую неизмененный плагин, «рейтинг» также переименовывается. Я могу исправить эту часть с помощью:
$.fn['rating'] = function(opts) {
из google closure compile jQuery Plugin ... но это не исправляет '$' (и было бы неплохо использовать неизмененный плагин, если это возможно).
из моей попытки внешнего (что, вероятно, неверно и / или неполно):
// ??? for '$'
// this one does NOT prevent 'rating' from being renamed
function rating(arg1) {}
// the following seem to work: they prevent the functions from being renamed
rating.focus = function() {}
rating.blur = function() {}
rating.fill = function() {}
... etc.
командная строка (и rating.sh в загружаемом файле):
java -jar ../compiler-latest/compiler.jar --formatting pretty_print --compilation_level ADVANCED_OPTIMIZATIONS --externs externs/jquery-1.7.js --externs externs/jquery.rating-extern.js --js original/jquery.rating.js --js_output_file jquery.rating.gcc.js
Сообщения об ошибках:
Firefox:
$(".star1").rating is not a function
callback: function (value) {
jquery.ratingSampleCode.js (line 9)
Chrome:
Uncaught TypeError: Object [object Object] has no method 'rating'
jquery.ratingSampleCode.js:8
из моего примера кода:
$('.star1').rating({
callback: function (value) {
Для тестирования: http://prefabsoftware.com/test/rating-july15/
Для загрузки: prefabsoftware.com/test/rating-july15.zip
Некоторые полезные ссылки: (которые мне не разрешено указывать как уценку, так как я не мог войти в систему с моими старыми очками репутации ...)
- Расширенная компиляция и внешние интерфейсы: developers.google.com/closure/compiler/docs/api-tutorial3#externs.
- образец externs: contrib: code.google.com/p/closure-compiler/source/browse/#svn%2Ftrunk%2Fcontrib%2Fexterns), включая сам jQuery, но не плагин оценки
- дополнительные внешние: code.google.com/p/closure-compiler/source/browse/#svn%2Ftrunk%2Fexterns
Есть ли простое исправление для внешнего? Или лучшее решение?
Спасибо!
Хорошо, это работает для файла externs:
$.prototype.rating = function(arg1) {}
jQuery.prototype.rating = function(arg1) {}
$.prototype.rating.focus = function() {}
... etc.