Ноябрь 3

Remove listener — NFC plugin

Проблема собственно в следующем, при активации сканера NFC вешается событие на считывание метки, и в примерах я не нашел как его приостановить или изменить полезно когда есть несколько типов считывания, да и просто если нужно приостановить работу сканера

например в примере

scanButton.addEventListener("click", async () => {
  log("User clicked scan button");

  try {
    const ndef = new NDEFReader();
    await ndef.scan();
    log("> Scan started");

    ndef.addEventListener("readingerror", () => {
      log("Argh! Cannot read data from the NFC tag. Try another one?");
    });

    ndef.addEventListener("reading", ({ message, serialNumber }) => {
      log(`> Serial Number: ${serialNumber}`);
      log(`> Records: (${message.records.length})`);
    });
  } catch (error) {
    log("Argh! " + error);
  }
});

writeButton.addEventListener("click", async () => {
  log("User clicked write button");

  try {
    const ndef = new NDEFReader();
    await ndef.write("Hello world!");
    log("> Message written");
  } catch (error) {
    log("Argh! " + error);
  }
});

при повторном (n) срабатывание тригера scanButton сканер будет дублировать (n) раз

log(`> Serial Number: ${serialNumber}`);
log(`> Serial Number: ${serialNumber}`); //* n

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


    let ndef = new NDEFReader();
   
    async function initNFC(){
        try {
            await ndef.scan();
        } catch (error) {
            curlog("Argh! " + error);
        }
    }
    initNFC();

scanButton.addEventListener("click", async () => {
  log("User clicked scan button");

  try {
    const ndef = new NDEFReader();
    await ndef.scan();
    log("> Scan started");

    ndef.addEventListener("readingerror", () => {
      log("Argh! Cannot read data from the NFC tag. Try another one?");
    });

    ndef.addEventListener("reading", ({ message, serialNumber }) => {
      log(`> Serial Number: ${serialNumber}`);
      log(`> Records: (${message.records.length})`);
    });
  } catch (error) {
    log("Argh! " + error);
  }
});

далее выносим безымянную функцию

  let ndef = new NDEFReader();
   
    async function initNFC(){
        try {
            await ndef.scan();
        } catch (error) {
            curlog("Argh! " + error);
        }
    }
    initNFC();
 function readr({ message, serialNumber }){
      log(`> Serial Number: ${serialNumber}`);
      log(`> Records: (${message.records.length})`); 
}

scanButton.addEventListener("click", async () => {
  log("User clicked scan button");

  

    ndef.addEventListener("readingerror", () => {
      log("Argh! Cannot read data from the NFC tag. Try another one?");
    });

    ndef.addEventListener("reading", readr  ({ message, serialNumber }) => {
      log(`> Serial Number: ${serialNumber}`);
      log(`> Records: (${message.records.length})`);
    },true);
});

что позволяет нам отключить функцию readr при необходимости

 let ndef = new NDEFReader();
    async function initNFC(){
        try {
            await ndef.scan();
        } catch (error) {
            curlog("Argh! " + error);
        }
    }

 initNFC();
 function readr({ message, serialNumber }){
      log(`> Serial Number: ${serialNumber}`);
      log(`> Records: (${message.records.length})`); 
}

scanButton.addEventListener("click", async () => {
  log("User clicked scan button");
    ndef.addEventListener("readingerror", () => {
      log("Argh! Cannot read data from the NFC tag. Try another one?");
    });
    ndef.addEventListener("reading", readr, true);
});

disableScanButton.addEventListener("click", () => {
ndef.removeEventListener("reading", readr, false);
});

Июль 27

перестал работать антисоветник Yandex . — kick_sovetnik

стоял на одном сайте такой себе антисоветник. логика — вычислить, что яндекс что-то советует — раньше вычислялось по фото — теперь фото нет точнее его заменили на css фон

так вот сделал пока костыль

модифицировал функцию

function checkNodes (nodes)

function checkNodes (nodes) {
Array.prototype.slice.call(nodes).forEach(function (node) {
$('html').css({"margin-top":"0px"});

if ( $("html").attr("mbr-initial-margin-top") ){
$('button[title="О программе"]').parents('div').parents('div').parents('div').remove();

}

if (isDiv(node) && (hasSovetnikImage(node))) {
remove(node);
}
});
}

Апрель 1

star rating jquery ui

Так много плагинов с огромными архивами кб стилей и библиотек великолепные примеры куда делись примеры с 3 строками и/т/п

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

 

 

<ul class=»ul-star»>
<li id=»li_1″ data-prop=»1″ {if $product_info.customers_rating < 1}class=»no-star»{/if}></li>
<li id=»li_2″ data-prop=»2″{if $product_info.customers_rating < 2}class=»no-star»{/if}></li>
<li id=»li_3″ data-prop=»3″{if $product_info.customers_rating < 3}class=»no-star»{/if}></li>
<li id=»li_4″ data-prop=»4″{if $product_info.customers_rating < 4}class=»no-star»{/if}></li>
<li id=»li_5″ data-prop=»5″{if $product_info.customers_rating < 5}class=»no-star»{/if}></li>
</ul>

<input type="hidden" id="vote" value="">

 

<script>

$(document).ready(function(){

$(‘.ul-star li’).mouseenter(function(){

var len=$(this).data(‘prop’);
var index=0;
for (index = len; index >= 0; —index) {
$(‘#li_’+index).addClass(‘activ’) ;

}

});
$(‘.ul-star li’).mouseleave(function(){

$(‘.ul-star li’).removeClass(‘activ’);

});

$(‘.ul-star li’).click(function(){
$(‘.ul-star li’).removeClass(‘select’);
var len=$(this).data(‘prop’);
var index=0;
for (index = len; index >= 0; —index) {
$(‘#li_’+index).addClass(‘select’) ;

}

$(‘#vote’).val(len);
});

});
</script>

<style>

.star-block {
width: 100%;
padding-left: 30px;
}
.star-block span {
float: left;
display: inline-block;
margin-right: 23px;
}
.star-block ul.ul-star {
margin: 0;
}
.star-block ul.ul-star li {
list-style: none;
cursor: pointer;
display: inline-block;
width: 23px;
height: 21px;
margin-right: 15px;
background: url(../svg/star-yelow.svg) no-repeat;
}
.star-block ul.ul-star li:last-child {
margin-right: 0;
}
.star-block ul.ul-star li.no-star {
background: url(../svg/no-star.svg) no-repeat;
}
.star-block ul.ul-star li.activ{
background: url(../svg/star-green.svg) no-repeat;
}

.star-block ul.ul-star li.select{
background: url(../svg/star-red.svg) no-repeat;
}

</style>

 

вот как-то так

Апрель 9

JS parseInt()

Нужно было найти пару комманд и нашёл интересный сайт который объясняет некоторые непонятки. например с помощю этой команды мы можем в JQuery использовать для вычетания отступов.

parseInt(’16 somthing else’); // 16 — неожиданно, правда?