Показать сообщение отдельно
  #12 (permalink)  
Старый 05.08.2010, 04:17
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Cuprum
Функция будет является частью небольшого скрипта и действовать только в его рамках
ключевые слова "частью небольшого скрипта". Хотелось бы увидеть этот небольшой скрипт...

Сообщение от Cuprum
Намекаете, что у функции есть побочные эффекты? Можно поподробнее? Интересно с т. з. получения нового знания.
выражения с побочными эффектами - выражения, в которых не только что-то вычисляется, но и что то изменяется. В первую очередь это всякие ++, --. Согласитесь, что проще рассчитывать, что в if у меня только проверяется условие и ничего не меняется. А ведь условие может быть не таким простым. Кроме того, не понятно, зачем вашей функции глобальная переменная. Вроде как по названию складывается впечатление, что она ничего не меняет, а только возвращает. В результате ее проще (и в вашем и в моем понимании) записать так:
function getSel(){
    if( window.getSelection )
        return window.getSelection();
    else
        return document.selection.createRange().text;
}


Сообщение от Cuprum
Глядя на ваш пример и Octane я, увы, не могу сказать что я вижу (конечно, дело во мне).
ну видимо смотрите не с той стороны Я рассчитвал, что нужно сделать некий компонент "ссылка для цитирования", т.е. я встрачаю в коде
<a id="quote-link" href="#">Цитировать</a>
<script type="text/javascript">new QuoteLink('#quote-link')</script>

и вижу, что при щелчке по этой ссылке происходит копирование выделенного текста (так как не было указано куда, соответственно компонент не доделан). Т.е. я вижу, что происходит, но не вижу как это реализовано. Если мне нужно узнать, как это реализовано я смотрю исходник компонента
function QuoteLink( el ){ 
    this._el = $(el); 
    $("body").mouseup( this._onMouseUp_body.bind(this) ); 
    this._el.click( this._onClick.bind(this) ); 
} 
  
QuoteLink.prototype._onMouseUp_body = function(){ 
    this._text = $Range.stringify($Selection.getRange()); 
} 
  
QuoteLink.prototype._onClick = function(){ 
    alert(this._text); 
}

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

Кроме того, в моем случае нету никаких необоснованно глобальных переменных.

Вообще можно было еще всякие детали поубирать, вот только jQuery не предоставляет такие возможности. Хотя по задумке и не должна. Все должно быть максимально просто. Просто пишем код и пишем, и никаких дополнительных движений не делаем. Зачем разбивать код на вменяемые части? Ведь это дополнительные движения, сложно. Зачем повторное использование? Лучше мы в каждом плагине напишем то же самое. Зачем нам компоненты, если можно общаться с объектами через одну функцию ($(foo).dialog('open'))?

Сообщение от Cuprum
И "простоту" я упомянул зря - она не только не однозначна, но как оказалось, ситуативна
а в чем ситуативность?

Последний раз редактировалось x-yuri, 05.08.2010 в 04:21.
Ответить с цитированием