Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 08.02.2010, 14:05
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от tenshi
я бы его просто не использовал х)
Это умное решение. когда встал вопрос какая из ФВ лучшая, то прототайп у меня улетел сразу как я в него глянул.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #22 (permalink)  
Старый 08.02.2010, 15:36
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

а кто прилетел вместо него?
__________________
.ня
Ответить с цитированием
  #23 (permalink)  
Старый 08.02.2010, 20:10
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от tenshi
а кто прилетел вместо него?
jQ. Еще посматриваю на mootools.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #24 (permalink)  
Старый 08.02.2010, 22:23
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

хрен редьки не слаще..
__________________
.ня
Ответить с цитированием
  #25 (permalink)  
Старый 08.02.2010, 22:41
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,233

tenshi,
может попробуешь довести свой скрипт под осла?
у меня не выходит:
1)на root onpropertychange не срабатывает. зато срабатывает на document-е
2)даже если он срабатывает, то оба срабатывания происходят после вывода alert([ inverse( 0 ), inverse( 1 ) ])
то есть я не знаю, как получить res в такой ситуации
Ответить с цитированием
  #26 (permalink)  
Старый 08.02.2010, 22:50
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

у меня в осле работало.. правда проверял я в 8..
а вот в лисице - жопа >_<" ща попробую по другому переделать..
__________________
.ня
Ответить с цитированием
  #27 (permalink)  
Старый 08.02.2010, 22:56
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,233

Хитрый план такой хитрый)))
не гарантирую, что это будет работать в 100% случаев/
var FThread= new function(){
//Version: 3
//Descr: 'creates a wrapper for function that allows you to not be afraid of exceptions in'
//License: 'public domain'

//Implementation:
var root= document.documentElement
var FThread= function( proc ){
	var thread= root.addEventListener
	? function( ){
		var res, self= this, args= arguments
		root.addEventListener( 'launch thread', function( ){
			root.removeEventListener( 'launch thread', arguments.callee, false )
			res= thread.proc.apply( self, args )
		}, false )
		var event= document.createEvent( 'UIEvents' )
        event.initEvent( 'launch thread', false, false )
        root.dispatchEvent( event )
		return res
	}
	: function( ){
		var res, self= this, args= arguments
		var image=document.createElement('img');
		image.onerror=function()
			{
			res= thread.proc.apply( self, args )
			}
		image.src='';//or 'about:blank'
		return res
	}
	thread.proc= proc
	return thread
}

//Export: return FThread

//Usage:
var inverse= FThread(function( a ){
	if( a === 0 ) throw 'division by zero'
	return 1/a
})
alert([ inverse( 0 ), inverse( 1 ) ])
// prints [ undefined, 1 ] and exception 'division by zero' in console log 

}

исключение бросается уже как в опере, так и в осле.
DebugBar даже начал отладку
а вот в лисе, исключения не пробрасываются
Ответить с цитированием
  #28 (permalink)  
Старый 09.02.2010, 13:13
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

var FThread= new function(){

Version: 4
Descr: 'creates a wrapper for function that allows you to not be afraid of exceptions in'
License: 'public domain'
 
Implementation:

var scripts= document.getElementsByTagName( 'script' )
var script= scripts[ scripts.length - 1 ]
var starter= document.createElement( 'button' )
starter.id= 'thread starter'
starter.style.display= 'none'
script.parentNode.insertBefore( starter, script )

var FThread= function( proc ){
    var thread= function( ){
		var res, self= this, args= arguments
		starter.onclick= function( ev ){
		    ( ev || event ).cancelBubble= true
		    starter.onclick= null
		    res= thread.proc.apply( self, args )
		}
        starter.click()
        return res
    }
    thread.proc= proc
    return thread
}
 
Export: return FThread

Usage:

var inverse= FThread(function( a ){
    if( a === -1 ) throw (void 0)()
    if( a === 0 ) throw new Error( 'custom error' )
    return 1/a
})
alert([ inverse( -1 ), inverse( 0 ), inverse( 1 ) ])
// alerts ",,1" and two exceptions in console log

}

исключения всплывают везде, только вот кастомные исключения теряют бэктрейс в мозилле и вообще всё в опере
__________________
.ня

Последний раз редактировалось tenshi, 09.02.2010 в 13:32.
Ответить с цитированием
  #29 (permalink)  
Старый 09.02.2010, 13:58
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

с оперой разобрался - нужно было обновить и включить: opera:config#UserPrefs|Exceptions Have Stacktrace
__________________
.ня
Ответить с цитированием
  #30 (permalink)  
Старый 09.02.2010, 17:11
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,233

Сообщение от tenshi
исключения всплывают везде
в мозилле твоя третья версия скрипта из первого сообщения в теме не пробрасывала ничего
вторая до правки также
теперь в мозилле пробрасывает.

теперь вообще везде работает.
красота
про click хорошо придумал. для него есть гарантия, что если на протестированном браузере сработал именно так, то так будет всегда, а не зависеть от погоды, как в случае image.onerror у меня
Ответить с цитированием
Ответ



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

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