Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.11.2019, 01:52
Интересующийся
Отправить личное сообщение для Vanguger Посмотреть профиль Найти все сообщения от Vanguger
 
Регистрация: 05.11.2014
Сообщений: 14

Переопределение методов jQuery
Прошу помощи в реализации следующего:

Есть большой не локализованный скрипт, который переловачивать не вижу смысла, в том числе ввиду будущих обновлений. В коде существует много конструкций jQuery, типа:
$('selector').text('Website');

Есть желание переопределить метод text из jQuery, примерно по следующей логике:
function lang(txt){
  if(txt=='Website')txt='Вебсайт';
  return txt;
}

Т.е. когда в коде встречается что-то вроде $('.txt1').text('Website');
то вместо <div class="txt1">Website</div>, вставлялось переведённое <div class="txt1">Вебсайт</div>

Подскажите пожалуйста есть ли возможность такое реализовать и если да, то как, пример было бы здорово.
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2019, 05:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Скрипт, это текст, а в тексте найти и заменить можно в любом редакторе, только менять нужно не грабли "Website" на грабли "Вебсайт", а на имя переменной, которая может содержать как "Website", так и "Вебсайт", так и любое иное.

Последний раз редактировалось laimas, 14.11.2019 в 08:40.
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2019, 12:10
Интересующийся
Отправить личное сообщение для Vanguger Посмотреть профиль Найти все сообщения от Vanguger
 
Регистрация: 05.11.2014
Сообщений: 14

Это вроде проще, но было бы гораздо элегантнее иметь описанное
переопределение, так как при обновлении скрипта, все правки полетят. Заданный вопрос остаётся открытым.
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2019, 12:21
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Vanguger, так?

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- скрипт, который вставляется сразу после jQuery -->
<script>
	/* словарик */
	var i18n = {
		"Website": "Уебсайт"
	};

	/* «манкипатчинг» позволяет добавить немного волшебства в jQuery */
	jQuery.prototype.text = (function (jQueryText) {
		return function text(string) {
			return jQueryText.call(this, string in i18n ? i18n[string] : string);
		}
	})(jQuery.prototype.text);
</script>

<!-- Пример -->
<script>
$(() => {
	$(".txt1").text("Website");
});
</script>
<div class="txt1"></div>
Ответить с цитированием
  #5 (permalink)  
Старый 14.11.2019, 13:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Vanguger
было бы гораздо элегантнее
Охрень, то есть под каждую такую замену переопределять методы?
Даже с учетом того, что в JQ и не потребуется ничего переопределять, и есть готовое $.valHooks, для такого занятия даже слов не найти, чтобы охарактеризовать. )
Ответить с цитированием
  #6 (permalink)  
Старый 14.11.2019, 14:21
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от laimas
Скрипт, это текст, а в тексте найти и заменить можно в любом редакторе, только менять нужно не грабли "Website" на грабли "Вебсайт"
Сообщение от laimas
Охрень, то есть под каждую такую замену переопределять методы?
Даже с учетом того, что в JQ и не потребуется ничего переопределять, и есть готовое $.valHooks, для такого занятия даже слов не найти, чтобы охарактеризовать. )
Так покажи как надо!

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- скрипт, который вставляется сразу после jQuery -->
<script>
	/* словарик */
	var i18n = {
		"Website": "Уебсайт"
	};

	/* здесь ожидается решение от laimas */
</script>

<!-- Пример -->
<script>
$(() => {
	$(".txt1").text("Website");
});
</script>
<div class="txt1"></div>
Ответить с цитированием
  #7 (permalink)  
Старый 14.11.2019, 14:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Malleys
Так покажи как надо
var myname = 'Траля-ля-ля'; -> Редактор -> найти/заменить "ХХХХ" -> myname. Если подмена определяется сервером, то и брать ее из переменных сервера.
Ответить с цитированием
  #8 (permalink)  
Старый 14.11.2019, 20:16
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от laimas
ля-ля'
А два языка как?
Ответить с цитированием
  #9 (permalink)  
Старый 15.11.2019, 01:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Malleys
А два языка как?
Чего чего, хотите сказать, что локализация осуществляется переопределением методов?
Ответить с цитированием
  #10 (permalink)  
Старый 15.11.2019, 13:32
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от laimas
Чего чего, хотите сказать, что локализация осуществляется переопределением методов?
Локализация определённо так не осуществлятся, но вам стоит ещё раз прочитать сообщение №1. Потому что в jQuery многие мерзости принимаются адептами jQuery на «ура». Вы что не поняли? (Смотри строку №9 в коде в сообщении №4)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просмотрела исходик jQuery Откорректируйте где не верно taksebe jQuery 5 23.11.2018 22:42
Переопределение функций в плагине jquery Shock9777 jQuery 4 08.06.2017 12:08
jQuery плагин с моддержкой методов falkone jQuery 6 18.06.2015 17:25
Вопрос поддержки старых методов jQuery antonM jQuery 1 04.10.2012 00:08
JQuery плагин Validation. Переопределение правил валидации формы. Виталик jQuery 3 07.06.2009 13:32