Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Открыть новую тему     Написать ответ в эту тему

Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
ее и так можно использовать внутри сколько угодно раз


Код:
var tis = {  
    _dt: function() {return document.getElementById('tis');},  
    _open: function(t) {  
        this._dt.innerHTML = '<div id="tisc">'  
        + '<i onclick="return tis._exit();" class="fa exit"></i>'  
        + t  
        + '</div>';  
        dt.className = '';  
        return false;  
    },  
    _exit: function() {  
        this._dt.className = 'hidden';  
        return false;  
    }  
}

 
так сойдет?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 14:52 03-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
так сойдет?

Разрешение у меня спрашиваете? А попробовать самостоятельно?
 

Цитата:
this._dt

Вернет саму функцию, а не результат ее исполнения

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 18:26 03-12-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Хорошо, попробую.
Вы не подскажите, что это за синтаксис такой?
 
 

Код:
<script type="text/javascript">
        (function(){var a=[].slice;window.is_debug=!1,window.protolog=function(){return{debug:function(){var b;b=1<=arguments.length?a.call(arguments,0):[]}}}(),window.AppState={stateid:1,realm:void 0}}).call(this);
    </script>

 
тут код написан так:

Код:
<script type="text/javascript">
        (function(){var ....
    </script>

 
Как этот синтаксис называется? Можно пару ознакомительных ссылок? И если не жалко, пару преимуществ и недостатков... И зачем он)

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:20 04-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
Как этот синтаксис называется?

обычный синтаксис, что в нем особенного?
 

Цитата:
И зачем он)

чтобы не перекрывались переменные, внутри функции они локальные.
http://ru.wikipedia.org/wiki/Замыкание_(программирование)
http://peter.michaux.ca/articles/javascript-namespacing

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 01:50 04-12-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
что в нем особенного

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

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 02:14 04-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
 правильно понял?

ну, можно сказать и так.

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 04:43 04-12-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii[?]

Цитата:
ну и каким боком это относится к CSS??  

Думал что можно оптимизировать средствами CSS.
Пробовал такими способами сделать.
 
Если добавить это событие к div.2

Код:
elems[i].addEventListener("click", highlightThis, true);

оно будет срабатывать ДО открытия окна. Нажал на кнопку - появился alert() с highlightThis() и потом только открылось дополнительное плавающее окно. При повторном нажатии куда угодно - 0 реакции.
 
Попробовал добавить к div.2  

Код:
div2.onclick = function(event) {
            if(event.target.tagName == this.tagName) {
                alert('1');
            }
        };

Вроде работает корректно. Но есть 1 недостаток. Если нажимать мишкой в области div.3 где есть отступ padding, срабатывает div.2.onclick() и окно закрывается. Хотя нажатие было в блоке div.3.
 
Вот наглядный пример.
 
   
 
При нажатии в зеленой (padding) или оранжевой (margin) - идет закрытие окна.
При нажатии в синей области - окно не закрывается. Как и должно быть.
Как убрать нажатие и в зеленой области?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 23:44 08-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
Как убрать нажатие и в зеленой области?  

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

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 23:56 08-12-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
не видя html кода


Код:
<style>  
div#table div.1{background:rgba(0,0,0,0.85); position:fixed; top:0; bottom:0; left:0; right:0; z-index:5;}  
div#table div.2{position: fixed; top: 0; bottom: 0; left: 0; right: 0; overflow: auto; z-index: 6;}  
div#table div.3{background: #fff; width: 700px; margin: 0px auto; padding: 20px; position: relative; z-index: 7;}  
div#table div.3 i.fa-exit {float: right; font-size: 15pt; margin-top: -17px; margin-right: -8px; cursor: pointer;}
</style>  
 
<div id="table">  
    <div class="1" onclick="return exit1();"></div>  
    <div class="2" onclick="return exit2();">  
        <div class="3">
            <i class="fa-exit" onclick="exit();"></i>
            <form method="POST" action="./">  
                ...........................................  
            </form>  
        </div>  
    </div>  
</div>

 

Цитата:
крестик отдельным элементом

 

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:00 09-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
крестик отдельным элементом

и кто из них крестик?
 

Цитата:
где есть отступ padding, срабатывает div.2.onclick() и окно закрывается. Хотя нажатие было в блоке div.3.  

я же давал ссылку на пузыри..
 

Цитата:
if(event.target.tagName == this.tagName)

какой смысл сравнивать теги, а не сами объекты?
if (event.target == this)

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 00:16 09-12-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
и кто из них крестик?  


Цитата:
<i class="fa-exit" onclick="exit();"></i>  

 

Цитата:
я же давал ссылку на пузыри..  

Не понял)
 

Цитата:
какой смысл сравнивать теги, а не сами объекты?  

Если сравнивать только объекты или id объектов, работает хорошо.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:36 09-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
Не понял)  

https://learn.javascript.ru/event-bubbling
там же написано, как остановить распространение события к родителям.
клик на  

Цитата:
<div class="3">  

распространяется к родителю и перехватывается в
Цитата:
<div class="2" onclick="return exit2();">  


Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 00:42 09-12-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Если Вы про это:  

Код:
event.stopPropagation()

Этот вариант не подходит.
 
Реализация такого метода:

Цитата:
if (event.target == this)

подошла лучше.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 00:49 09-12-2016
Aladdinych



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть объект obj, у него есть два метода meth1 и meth2.  
Из метода meth1 вызывается внешняя функция func(par1, par2, meth2)
одним из параметров которой передается meth2.  
function func(par1, par2, callback){
..
..
var changestate = function(){
     ...
 
    callback();
 
    }
}
 
Внутри этой функции определятся callback функция для определенного события.  
Из нее - из колбэк функции вызывается meth2.
Вопрос - как добиться, чтобы внутри метода meth2 this указывал на obj.
Потому, что он указывает в настоящий момент совсем на другой объект.

Всего записей: 323 | Зарегистр. 18-10-2005 | Отправлено: 22:27 14-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Aladdinych

Цитата:
одним из параметров которой передается meth2.  

как передается? если просто this.meth2, то ессно не будет работать - нужно через замыкание
https://jsfiddle.net/qsex0k1c/2/
 
ps: поправил ссылку, а то руки крюки - думаю одно, а пишут другое )

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 22:35 14-12-2016 | Исправлено: Mavrikii, 22:42 14-12-2016
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
может кто поможет на jsfiddle.net к этому Подробнее...
 
дабавить вот это http://stackoverflow.com/questions/31391207/javascript-readasbinarystring-function-on-e11
 
JavaScript readAsBinaryString Function on E11
 
заранее благодарен
 
Добавлено:
PS: без jQuery

Всего записей: 2235 | Зарегистр. 25-02-2013 | Отправлено: 18:09 16-12-2016
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
обязательно с 'onloaded' а не 'onload'
и желательно чтобы в IE10 тоже работало

Всего записей: 2235 | Зарегистр. 25-02-2013 | Отправлено: 21:14 16-12-2016 | Исправлено: vs6262, 12:36 17-12-2016
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
может кто действительно поможет ?
 
Добавлено:
я сам с этими прототипами не разберусь




Запрещено дублировать вопросы в разных темах и поднимать тему

Всего записей: 2235 | Зарегистр. 25-02-2013 | Отправлено: 03:09 18-12-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vs6262
как же вы утомляете флудом.. давно бы уже сами сделали
https://jsfiddle.net/xazfukob/
 
а для не html5 только flash или java - https://github.com/Jahdrien/FileReader

Всего записей: 15686 | Зарегистр. 20-09-2014 | Отправлено: 04:34 18-12-2016 | Исправлено: Mavrikii, 04:36 18-12-2016
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо большое
 
Добавлено:

Цитата:
а для не html5 только flash или java

FileReader для более старых браузеров может можно заменить на ActiveX Reader.
случайно в гоогле наткнулся. прозондирую ещё

Всего записей: 2235 | Зарегистр. 25-02-2013 | Отправлено: 04:39 18-12-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru