За последние 24 часа нас посетили 17448 программистов и 1710 роботов. Сейчас ищут 1699 программистов ...

Есть задача. Получить tag текущего скрипта.

Тема в разделе "JavaScript и AJAX", создана пользователем mpak, 18 ноя 2014.

  1. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Я уже условия раз пять написал в теме. И не раз уже мне предлагают id ставить.

    Почитай http://xpoint.ru/forums/programming/javascript/misc/thread/36850.xhtml у чувака такая же ситуация.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    блять

    Добавлено спустя 16 секунд:
    ты тупой
     
  3. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Как раз это не на все случае жизни. Куча условий и возни с этим. Нужно каждому элементу выствалять уникальный id плюс проконтролировать чтобы таких id уже небыло в коде

    А это те требования которые писал ранее:
    Кто из нас тупой? Что здесь если не решение с использованием id? Если нет, значит не смог обьяснить. Код в студию!

    Добавлено спустя 7 минут 58 секунд:
    Немного модифицировал предыдущие код

    Код (Text):
    1. <script> console.log("Скрипт "+ (tmp = 1), document.getElementsByTagName('script').length) </script>
    2. <script> console.log("Скрипт_"+ ++tmp, document.getElementsByTagName('script').length) </script>
    3. <script> console.log("Скрипт_"+ ++tmp, document.getElementsByTagName('script').length) </script>
    4. <script> console.log("Скрипт_"+ ++tmp, document.getElementsByTagName('script').length) </script>
    5. <script> console.log("Скрипт_"+ ++tmp, document.getElementsByTagName('script').length) </script>
    Выдает:

    Код (Text):
    1. Скрипт_1 11
    2. Скрипт_2 11
    3. Скрипт_3 11
    4. Скрипт_4 11
    5. Скрипт_5 11
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а можно поинтересоваться практическим применением данной технологии? джаваскрипт в phar и без этого геморра должен залетать на ура :D
     
  5. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Где то в тексте этой темы было что то про phar? Или это попытка потролить?

    Есть вполне конкретная задача. С вполне вменяемыми требованиями. Решения насколько понимаю нет ни у кого. Странна сама ситуация, когда в яваскрипте нельзя однозначно обратится к элементу дом. Более того с ним вообще не получится никак работать вы его просто не сможете идентифицировать. Даже без какой то практической цели. В прошлый раз я не смог вам показать практическое применение моего решения. Думаю и в это раз у меня это не получится. Нет желания вас в чем то убеждать. Не видите ценности - не используйте. Я просто хочу иметь решение - обратиться хоть как то к элементу script в котором работает этот скрипт.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нет, что ты. Тут ща все охуенно наморщили лбы исключительно над твоей проблемой. Мне кажется это очевидно.

    Добавлено спустя 2 минуты 6 секунд:
    можно закрыть темку?
     
  7. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Задача была решить ее а не убедить кого то в практическом ее применении.

    Задача все еще не решена. Хотелось бы все-таки пообщаться с теми кому интересно ее решение и послушать тех, кто в этом понимает.
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да ты можешь сказать на кой хер надо-то это? мне ж интересно. или как в случае с фаром мы нихера от тебя не добьемся кроме громких выкриков в стиле "Вы все дураки и не лечитесь! Одна я умная, в белом пальто стою красивая!". блин, с тобой общаться невозможно. ты какой-то агрессивный. тебя надо в наморднике со строгим ошейником на цепи в клетке держать... прям фу. вот спросишь по делу а в ответ ушат говна. и потом ходи думай как с такими моральными уродами интеллигентно общаться... потролить его нельзя понимаешь ли неженка какая. дык если бы ты в той теме в кусты не побежал не было бы повода над тобой прикалываться. кстати извини за жалобу на твой аккаунт вКонтакте. реально не понимаю владельцев магазинов которые догоняют ушедших от них без покупок клиентов. судя по статусу "временно заморозили" - админы вконтактика тоже не понимают таких уродов.
     
  9. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Слушай отстнь от меня тролина!!!! Я же обьяснил что не считаю нужным тебе что то обьяснять. Не знаешь решение иди пасись. Дай пообщаться с людьми которые понимают как это сделать а не сидят и не едят мозг зачем это нужно. Есть дети "Почемучки" ты похож на них "А зачем ка?" Засераешь каждую тему своими вопросами. Достал уже. Тебе не понять. Пей "ростишку". Вырастешь поймешь.
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    че ты пристал к человеку ну ! ваще как ты мог
     
  11. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    мы на профессиональном форуме. человек пытается создать какую-то технологию. но у него этого не получается. я хочу знать истинную первопричину возникновения данной задачи. может я смогу ее решить, запатентую и потом буду ему в аренду сдавать. я ж плохой =)
     
  12. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Какой ты душный. На профессиональном форуме вопрос "А зачем это" не задают. Если ты здесь предполагается, что ты уже знаешь зачем это. Если не знаешь - тебе тут не место. Иди на форум философов и задавай вопросы, Где? да почему?
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Всё именно так.
     
  14. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Спасибо.
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Я всегда на твоей стороне. Верь мне.
     
  16. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Прямо спас. А то бы эта зверюга меня сожрала. Я даже почувствовал смрад из его пасти. Чуть чуть и все капут. Так троли и жрут нормальных людей. Фу, пронесло.
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Не боись, братуха! Мы тя в обиду не дадим. Тут место мирное.

    Ладно, короче проехали. Зачем это надо было если расскажешь - ты очень расслабишь пару мозгов. А то у меня реально защемило так, что я не могу придумать ни одного применения этому делу.
     
  18. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Все свои яваскрипт интерфейсы я привязываю к одному элементу. Обычно это div с классом content это удобно так как при добавлении удалении вложенных элементов не приходится к ним повторно навешивать события как это было с .live(). Выглядит это примерно так

    Код (Text):
    1. $(function(){
    2.     $(".content").on("click", ">div", function(e){ // непосредственный ребенок div родительского элемента
    3.          $(e.delegateTarget).find( что то ищем внутри .content
    4.     }).on("change", "select", function(e){ // Все вложенные выпадающие списки
    5.         $(this).remove() Удаляем этот селект
    6.     });
    7. })
    И все основые триггеры давно уже написаны все сводится к банальному копированию скрипта или его части из страницы в страницу. Обращение внутри скрипта происхоит внутри этого элемента .content если нужно что то искать то я ищу это в e.delegateTarget как бы все логично. Такой подход исключает влияние скрипта на все вышестоящие элементы как бы они не назывались и где бы не находились. Для того, чтобы привязать все скрипты к странице остается только указать класс элемента к которому все будет привязанно. Но осталась одна заморока. Мне каждый раз приходится выбирать этот единственный обьект назначать ему класс и указывать его же в скрипте. Опять же это не исключает другой ошибки дублирования классов и идентификаторов внутри страницы. Часто это чужие страницы структуры которой я вообще не знаю и не хотел бы что то в нем менять. Но последнее время это происходит часто я подумал что будет удобно сделать один раз привязку к родителю элемента в котором находится сам скрипт. Для этого собственно и нужно. Логика своидилась бы к премитивной где лежит скрипт для того обьекта он и работает. Перемещение его внутри страницы могло бы менять владельца всех событий и триггеров без какого бы то нибыло изменеения верстки.
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    даже не буду спрашивать, зачем ты это делаешь.

    не понял, почему?

    откуда может взяться дубль? ну поправишь при дебаге разок. Это какая-то уникально редкая ситуация, которая даже если возникает, то отсеивается на этапе разработки.

    А идею пихать весь js тотально вниз, к закрывающему тегу </body> ты в принципе отвергаешь, как еретическую?
     
  20. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Скрипт пример которого привел выше обыно законченное решение, которое реализует какую то уже законченную логику. Типа плагина. Но чтобы вставить в страницу его нужно к чему то привязать. То внутри чего он будет работать, искать свои элементы отслеживать их события. Выше это .content но может быть и корневой див внутри какого то из логических блоков. Логика от этого не меняется мы берем верхний див блока и все на него вешаем гарантируя работу скрипта только внутри этого блока.

    По закону мерфи если что то имеет шанс произойти это обязательно произойдет. Работая с верстальщиками или с другими программистами я не могу им дать список классов запрещенных к использованию на сайте. Это просто не удобно. Сам он не имеет возможности проверить какие идентификаторы уже есть на страницу. В зависимости от логики в любой момент отображается не вся верстка на странице. Опять же бывало когда в один прекрасный момент все валится. А после выяснения оказывается, что верстальщик постаивл такой класс где то в другом место вся логика поломалась и все перестало работать. Поэтому позаботится о том, чтобы мой скрипт не пересекался даже чисто теоретически с другими скриптами становится моей задачей. К тому же человек плохой генератор случайных классов. Если элемент что то добавляет на странице девять из десяти что он будет назван .add Мне приходилось видеть несколько id="content" один это как правило див с контентом, второй это где то внутри блока. Верстальщик посчитал, что он уникальный и никто больше не в праве использовать такой же id.

    В итоге пусть верстаки используют свои классы и id как хотят. Есть желание максимально уйти от использования каких то идентификаторов используя в качестве основного один единственный элемент родитель скрипта без модификации его классов и id все привязывание скрипта в этом случае будет выглядеть просто размещением в родительском элементе скрипта. Модификации самого родительского элемента и скрипта не потребуется. Я бы даже сказал, что для меня использование идентификатров в верстке это процесс крайней надобности. Возможно даже плохого тона. И от него нужно максимально избавляться. Опять же не уверен смог ли передать свою мысль правильно.
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    что мешает завеситься на класс/id и если такого нет, то и всё, а если есть, то и само собой пашет. Не?

    Это назвыается параноя.
    можно тупо использовать префиксы.

    Плохой человек! Фу! =) зачем ты это говоришь всё? Ну можно же не ожидать 100% равномерного генерирования по всему полю 1-32 символов в имени класса. Ты какой-то перегретый. Боишься вещей, которые ну скажем так не сильно обычно кого пугают... Может в отпуск?

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

    а, ну ладно. Ты всё ж подумай о префиксах.
     
  22. torrius

    torrius Активный пользователь

    С нами с:
    28 июн 2014
    Сообщения:
    35
    Симпатии:
    1
    ПКСС!
    Так же стараюсь не использовать id и class, без фанатизма, конечно.
    После полной загрузки страницы можно найти любой <script> по его расположению в HTML:
    document.getElementsByTagName('script')[порядковый номер]
    Других способов, не используя прямо или косвенно каких либо идентифицирующих атрибутов, науке не известно.
    Кстати, в хромиуме проверил, работает мой пример))
     
  23. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Вся эта тема и сводится посути к задаче где этот порядковый номер взять? Это бы решило все проблемы. Как получается что у нас chromium по разному работает? А я кажестя понимаю почему. У меня кусок кода загружается по аяксу. Возможно это повлияло на то, что у меня во всех скриптах одинаковый порядковый номер. Надо проверить. Если это так, это частично решает проблему.

    Действительно првоерил. Не работает только если верстка с кодом по аяксу грузиться. Моя ошибка проверял именно на такой странице и удивлялся почему не работает. В принципе этим уже можно принебречь. Опять же к вопросу о Законе мерфи. Вроде все учел, но обязательно вылезит какой нибудь баг. Спасибо помогли решить проблему. Спасибо большое.
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Пермский краевой союз стоматологов?

    Добавлено спустя 1 минуту 6 секунд:
    не смешно
     
  25. mpak

    mpak Активный пользователь

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    Еще один момент. Глюк который вылез раз уж разбираем ситуацию до конца. Если оборачивать все оберткой жкверивской. А идентификатор скрипта нам нужен внутри жквери.

    Код (Text):
    1. $(function(){
    2.     var script = document.scripts[document.scripts.length-1];
    3.     console.log("script:", script);
    4. })
    То скрипт снова не тот. Думаю это из за того что инициализация jquery идет после загрузки всего документа. После небольшой модификации и эту проблему удалось обойти. Похоже, что это окончательно работчий вариант

    Код (Text):
    1.  
    2. <div> <!-- контейнер на который повиснут все события -->
    3.     <script>
    4.         $(function(script){
    5.             $(script).parent().on("change", "select", function(e){
    6.                 Код при обработке элемента
    7.             });
    8.         }(document.scripts[document.scripts.length-1]));
    9.     </script>
    10.     <div>
    11.         <select></select>
    12.     </div>
    13. </div>