Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 29.07.2011, 21:48
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от ваый
А тут и проверять нечего. 100% кросбраузерно. Он не может быть не последним.
У элементов тоже ну не может не быть прототипов, но вот IE10- доказывает обратное...
В общем, все может быть, но я бы так делать делать не стал.

Последний раз редактировалось monolithed, 29.07.2011 в 21:50.
Ответить с цитированием
  #32 (permalink)  
Старый 29.07.2011, 21:52
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Ну тот факт, что этот вариант использует google, уже внушает доверие, разве нет? К тому же такой метод уже лет десять как используют, опять же по причине простоты и кроссбраузерности. Вот, кстати, нарыл доказательство, кто не верит http://feather.elektrum.org/book/src.html
Ответить с цитированием
  #33 (permalink)  
Старый 30.07.2011, 00:29
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от ваый
Мне кажется, что мы говорим о разных вещах. Как мне может помочь textarea в данном случае?
Цитата:
Why <textarea>?
The <textarea> element has the nice property of not radically messing up the formatting of its innerHTML.
- This stability of <textarea>'s innerHTML is important because JST syntax allows you to place control flow tags (like if/elseif/for) in all sorts of odd places, such as even -inside- HTML tags. For example:
<option value="${country.name}" {if country.name == currCountry}selected{/if}>
- Just as with many server-side template languages, the JST syntax is not true HTML/XHTML/XML. Hence, the beauty of using <textarea> elements to hold our JST templates.
http://code.google.com/p/trimpath/wi...criptTemplates
другие шаблонизаторы тоже бывает textarea используют

Сообщение от ваый
Это да, но думаю, что для передачи параметров как JSON строки, это можно предусмотреть.
зависит от параметров, для {lang: 'ru'} скорее всего и предусматривать ничего не надо

Сообщение от monolithed
когда-то читал, что код может отработать некорректно (вроде бы в книге Д. Гудмана, но точно не помню). Не знаю на сколько эта информация устарела, но для меня это стало табу, да и не было никогда необходимости.
да, это аргумент, но не табу

Сообщение от monolithed
Меня в этом вопросе возмущает, то почему они не выбрали один из уже существующих подходов (не считая решения с пространствами имен).
ну там же много людей, может и причины какие-то были

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

Сообщение от B@rmaley.e><e
Выглядит сомнительно. Эвент-хандлеры, в общем-то, не рассчитаны на возвращение значений.
и тем не менее, довольно известная практика

Сообщение от monolithed
У элементов тоже ну не может не быть прототипов, но вот IE10- доказывает обратное...
а можно подробнее про ie 10?

Сообщение от ваый
Ну тот факт, что этот вариант использует google, уже внушает доверие, разве нет?
ну есть немного

Сообщение от ваый
К тому же такой метод уже лет десять как используют, опять же по причине простоты и кроссбраузерности. Вот, кстати, нарыл доказательство, кто не верит http://feather.elektrum.org/book/src.html
откуда такие выводы? Ну можно предположить, что статья написана году в 2005-ом. Но почему ты решил, что это распространенная практика? Да и доказывать ты как-то косвенно пытаешься. Давай попробуем напрямую:
<!doctype html>
<html>
<body>
    <script src="1.js"></script>
    <script src="2.js"></script>
    <script src="3.js"></script>
    <script>
        d([a, b, document.body.innerHTML]);

        function d(s){
            document.body.appendChild(
                document.createTextNode(s)
            );
            document.body.appendChild(
                document.createElement('br')
            );
        }
    </script>
</body>
</html>


1.js:
var a = 1;


2.js:
var scripts = document.getElementsByTagName('script');
var script = scripts[scripts.length-1];
script.parentNode.insertBefore(document.createTextNode('test'), script);


3.js:
var b = 2;


не нашел браузера, в котором это не работает. Почему это плохой тест (почему такой метод доступа к тегу скрипт может не работать) и как его можно улучшить?

p.s. вообще, я в последнее время подумал, что слишком сильно себя ограничиваю. Надо больше экспериментировать.
Ответить с цитированием
  #34 (permalink)  
Старый 30.07.2011, 00:50
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Сообщение от x-yuri
Да и доказывать ты как-то косвенно пытаешься.
Ну я тоже выше экспериментальное доказательство приводил.

Сообщение от x-yuri
Но почему ты решил, что это распространенная практика?
Я и не говорил, что очень распространенная. Напротив, она очень даже не распространенная, но некоторые о ней знают, Джон Резиг, например
Ответить с цитированием
  #35 (permalink)  
Старый 30.07.2011, 01:00
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от x-yuri
а можно подробнее про ie 10?
в IE9 final + обновления (без них нет) имплементровали полную поддержку Node , HTMLDocument.prototype и Element.prototype. Ну и в IE10 совсем все гладко))

Последний раз редактировалось monolithed, 30.07.2011 в 01:02.
Ответить с цитированием
  #36 (permalink)  
Старый 30.07.2011, 01:16
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

а что значит полная? У меня следующий код работает и в ie 8:
Element.prototype.testMethod = function() {
    alert("test");
}
document.body.testMethod();

или это не полная поддержка?
Ответить с цитированием
  #37 (permalink)  
Старый 30.07.2011, 01:28
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от x-yuri
а что значит полная?
объект Node отсутсвует в IE8, а Element.prototype появилось вроде как не с первого билда (также как Selectors API Level 2)

Последний раз редактировалось monolithed, 30.07.2011 в 01:31.
Ответить с цитированием
  #38 (permalink)  
Старый 30.07.2011, 11:56
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

У нас в вебвизоре предлагался вот такой код для вставки на сайты
<script type="text/javascript">
    document.write('<script\u0020type="text/javascript"\u0020id=":visorCode"><\u002fscript>');
    var __visorInit=new Function('','if(typeof(__visor)!="undefined")__visor.init(100);');
    var __visorConnect=new Function('','document.getElementById(":visorCode").src="//c1.web-visor.com/c.js"');
    if(Object.prototype.toString.call(window.opera)=='[object\u0020Opera]')
    document.addEventListener('DOMContentLoaded',__visorConnect,false);
    else __visorConnect();
</script>


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

Это я к тому, что глупо обсуждать какое-либо решение, не зная предпосылок, которые привели к этому решению.
Ответить с цитированием
  #39 (permalink)  
Старый 30.07.2011, 14:11
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Kolyaj, ну расскажи нам об этих предпосылках.

фича с исполнением скриптов по мере загрузки страницы не работает в гекко в режиме xhtml. там сначала строится дерево, а только потом исполняются скрипты. соответствнено и document.write не работает.

пространства имён вполне кроссбраузерны. если опять же не пользоваться xhtml парсором.
__________________
.ня
Ответить с цитированием
  #40 (permalink)  
Старый 01.08.2011, 12:13
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

Сообщение от x-yuri Посмотреть сообщение
это был вопрос про передачу информации через onclick вообще. Например, по сравнению с передачей через кастомные атрибуты, onclick валиден (правда для меня это на данный момент не важно). Но с появлением data-* это стало не актуально. Или может быть еще какие-то причины есть...
Придумал не я.
Используется, потому что удобно (не надо ничего парсить, можно не просто передавать данные, а выполнять функции), кроссбраузерно и не лезет в innerHTML (актуально для элементов верстки, к которым надо подключить JS).
Ответить с цитированием
Ответ



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

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