Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 29.03.2013, 00:04
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

А че из ифрейма достать другой конструктор не вариант?
(function () {
	var iFrame = document.createElement("iframe"), iFrameDoc;
	document.body.appendChild(iFrame);
	iFrameDoc = iFrame.contentDocument || iFrame.contentWindow.document;
	iFrameDoc.open();
	iFrameDoc.write('<script>window.Array = Array</scr' + 'ipt>');
	iFrameDoc.close();
	window.$Array = (iFrame.contentWindow || iFrameDoc.defaultView).Array;
}());

$Array.prototype.test = function () {};

var array = [], $array = new $Array();

alert([
	"test" in array,
	"test" in $array,
	Array.isArray ? Array.isArray($array) : "",
	Object.prototype.toString.call($array),
	new $Array(1, 2, 3).concat(4)
]);

Последний раз редактировалось Octane, 29.03.2013 в 00:10.
Ответить с цитированием
  #32 (permalink)  
Старый 29.03.2013, 00:13
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от nerv_
не понял, что ты имеешь ввиду
Например в fancybox увидел проверку if ($.type($el) == 'object') { .. }
Но для zepto type = 'array'. Проверка не проходит. И это кривизна zepto.
Сообщение от nerv_
зачем?
Там же увидел if ($el instanceof $) { ... }
Опять же, для zepto это не сработает.
Ответить с цитированием
  #33 (permalink)  
Старый 29.03.2013, 00:41
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,584

Сообщение от rgl Посмотреть сообщение
Aetae,
Только функция должна быть чуть посложнее - нужно отсекать дробные числа, слишком большие числа, и много чего еще:
Ну я и не претендовал на окончательность - просто пример.)
Кстати по поводу больших чисел - просто наш псеводомассив круче нативного. ))


Сообщение от Octane Посмотреть сообщение
А че из ифрейма достать другой конструктор не вариант?
Ну да, забыли об энтом варианте. Но тут свои подводные камни, ибо энтот $array уже не instance от Array. Да и грязно это, юзать стоит только если задача стоит "добиться N любой ценой".)
__________________
29375, 35

Последний раз редактировалось Aetae, 29.03.2013 в 00:43.
Ответить с цитированием
  #34 (permalink)  
Старый 29.03.2013, 01:27
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от danik.js
Там же увидел if ($el instanceof $) { ... }
Опять же, для zepto это не сработает
в зепто для этого есть специальный метод
$.zepto.isZ( some );

Сообщение от danik.js
Например в fancybox увидел проверку if ($.type($el) == 'object') { .. }
Но для zepto type = 'array'. Проверка не проходит.
ради интереса проверил
var x = $( 'div' );

alert( $.type( x ) == 'array' ); // true
alert( $.type( x ) === 'array' ); // и так тоже true
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #35 (permalink)  
Старый 29.03.2013, 10:01
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Octane, блин, круто! Это действительно делает то, что мне нужно. Но это конечно очень грязный хак. Я не уверен что его можно использовать.
А есть еще подобные вариации для получения другого Array ?
Сообщение от Aetae
$array уже не instance от Array
Так это понятно. Это и отражает суть задачи - прототипы должны быть разными. Следовательно мы не будем иметь instance от Array.

Сообщение от nerv_
в зепто для этого есть специальный метод
Я вкурсе. Но jquery-плагинам это неизвестно )
Сообщение от nerv_
alert( $.type( x ) == 'array' ); // true
Я о чем и говорю. Коллекция zepto - массив. Коллекция jquery - объект.
В плагинах бывает проверка через $.type и поведение jquery и zepto тут будет разным.
Ответить с цитированием
  #36 (permalink)  
Старый 29.03.2013, 12:42
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

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

Сообщение от danik.js
Я вкурсе. Но jquery-плагинам это неизвестно )
не проще поиск и замена по регулярному выражению внутри плагина, чем вся эта акробатика?
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #37 (permalink)  
Старый 29.03.2013, 13:09
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

danik.js,
это еще чо , мы тогда пытались функции с другим прототипом получать вот это было весело)
Ответить с цитированием
  #38 (permalink)  
Старый 29.03.2013, 13:49
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от nerv_
не проще поиск и замена по регулярному выражению внутри плагина, чем вся эта акробатика?
Правки плагинов - это ведь и есть акробатика. Не проще ли раз и навсегда устранить различия между jquery и zepto ? Нет ведь принципиальных проблем сделать это.
Ответить с цитированием
  #39 (permalink)  
Старый 29.03.2013, 14:17
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от danik.js
Не проще ли раз и навсегда устранить различия между jquery и zepto ?
проще использовать жуквери. Или жуквери 2.0 А если устранить различия (полностью, как ты хочешь), то вместо зепто мы получим жуквери.

Могу еще пример привести: когда пытался подключить жуквери плагин к зепто, оказалось, что в зепто нет метода pushStack.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #40 (permalink)  
Старый 29.03.2013, 15:48
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от nerv_
А если устранить различия (полностью, как ты хочешь)
Пффф. Почему полностью?
Дописать $.prototype = перед $.fn - это всего 12 символов
Ну с коллекциями будет чуть сложнее, но правок будет не так уж и много. На уровне ядра больше ничего править то и не нужно (наверное). С чего ты взял что после этих правок zepto станет jquery?
Это не кучи говна ради совместимости с IE6, не миллионы оберток, исправляющие недочеты быдлокодеров, css-анимация никуда не денется. Selector engine не добавится.
В общем я знаю две вещи:
1) нужно по возможности использовать Zepto. Ибо работает быстрее, грузится быстрее, и не содержит тонны мертвого кода. А ишак( IE8- ) пускай хавает jQuery.
2) при желании можно писать плагины, совместимые как с jQuery, так и с Zepto. И это не так уж и сложно.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать массив функций (?) venzh jQuery 1 02.02.2012 06:11
Как создать массив из картинок KamalovRadik Firefox/Mozilla 17 04.10.2011 14:06
Создать массив не содержащие данные другого масива KamalovRadik Общие вопросы Javascript 1 05.09.2011 03:30
Подскажите код как создать эффект... lopraeph Элементы интерфейса 1 09.06.2011 20:18
как создать елемент с вложеными елементами scuter Events/DOM/Window 11 14.05.2008 16:15