function moveBg(evt){
if(!!moveBg.timeout){ // функция недавно вызывалась - запоминаем параметр и ждем;
moveBg.evt=evt;
return ;
}
// начинаем засечку времени 1 сек. По окончании таймаута вызываем функцию с последним актуальным параметром, если надо
moveBg.timeout=setTimeout(function(){moveBg.timeout=null; if(!!moveBg.evt){moveBg(moveBg.evt); moveBg.evt=null}},1000 );
// дальше без изменений и коррекций
var totalWidth = $('.home-shadow').width()
var rect = evt.target.getBoundingClientRect()
var x = evt.clientX - rect.left;
var percent = x*100 / totalWidth
console.log(percent)
var styleElem = document.head.appendChild(document.createElement("style"));
styleElem.innerHTML = `#home-shadow:before {background-position: ${percent}% 50%`;
}
$('body').mousemove(function(evt){
if(evt.target.classList[0] == 'home-shadow'){
moveBg(evt);
}
});
let control = document.querySelector('.text'),
txt= control.textContent,
track=[];
function runit(){
let c= track.shift();
if(!c) return ;
if(c[0]==='pause'){
setTimeout(runit,c[1]);
} else if(c[0]==='substr') {
control.textContent = txt.substr(c[1], c[2]);
setTimeout(runit, 300);
}
}
// программируем поведение
for( let i=1;i<=txt.length;i++){
track.push(['substr',0,i]);
}
track.push(['pause',3000]);
for( let i=txt.length;i>=0;i--){
track.push(['substr',0,i]);
}
runit();
$(function(){
var elements=$('.red,.yellow');
for(let i=0;i<elements.length;i++){
let ri=elements.eq(i)[0].getBoundingClientRect();
for(let j=i+1;j<elements.length;j++){
let rj=elements.eq(j)[0].getBoundingClientRect();
console.log(//ri,rj,
Math.max(ri.x,rj.x)<=Math.min(ri.x+ri.width,rj.x+rj.width)
&&
Math.max(ri.y,rj.y)<=Math.min(ri.y+ri.height,rj.y+rj.height)
)
}
}
})
// Создаю клетки 49 клеток с классом "cell"
for(let i = 1; i <= 49; i++) {
var x=Math.floor((i-1)/7)+1,y=((i-1)%7)+1;
area.innerHTML += `<div class='cell' id='id-`+x+`-`+y+`'></div>`
}
// Отслеживаю клик по клетке и выполняю функцию cellClick()
const cells = document.querySelectorAll('.cell')
cells.forEach(cell => {
cell.addEventListener('click', cellClick, false)
})
// Первый игрок - X
let player = 'x'
// В функции cellClick() я проверяю занята ли клетка, и если нет, то
// вставляю в неё текущего игрока.
function cellClick() {
/**
* проверяем, что по координатам x,y стоит нужный знак
*
* @param x
* @param y - координаты
* @param player - крестик
* @returns {boolean} true - стоит
*/
function check(x,y,player){
return document.getElementById('id-'+x+'-'+y).innerHTML==player;
}
/**
* считаем количество крестиков(player) от координаты x,y в "направлении" dx,dy
* @param dx
* @param dy
* @param x
* @param y
* @param player
* @returns {number}
*/
function countit(dx,dy,x,y, player){
var total=0;
x+=dx; y+=dy;
while (x>0 && x<=7 && y>0 && y<=7 ){
if(check(x,y,player))
total++;
else
break;
x+=dx; y+=dy;
}
return total;
}
if (!this.innerHTML) {
this.innerHTML = player;
// so checkit
var dirs=[[0,1],[-1,1],[-1,0],[-1,-1]],
// вычисляем текущие координаты клика
m=this.getAttribute('id').match(/id-(\d+)-(\d+)/),
// вот они - координаты. Умножение для преобразования строк в числа
x=1*m[1], y=1*m[2];
for(var d=0;d<dirs.length;d++){
if(5>1+ // 1 - мы поставили крестик
// число крестиков в направлении
countit(dirs[d][0],dirs[d][1], x, y, player) +
// и инвертированном направлении
countit([-dirs[d][0],-dirs[d][1]],x ,y , player)
){
// если меньше чем надо для победы - считаем дальше
continue;
}
// если нашли больше 5 крестиков в ряд - победа.
alert('Победа '+player);
break;
}
}
// Меняю игрока, если текущий игрок сходил.
player = player == "x" ? "o" : "x"
}
let m= document.body.innerHTML.match(/(?=[^>]*name="email")<input[^>]+value="([^"]+)"/is);
console.log(m[1]);
function setMyTimer(_t, interval){
if(typeof(_t)=='function'){
_t={main:_t}
}
_t.start=Date.now();
_t.interval=_t.interval||interval;
_t.log_interval=_t.log_interval || 1000;
function log(){
const diff=_t.interval - (Date.now() - _t.start);
if(_t.log)_t.log(diff);
if(diff>_t.log_interval)
setTimeout(log,_t.log_interval);
else {
setTimeout(_t.main,diff<0?1:diff);
}
}
setTimeout(log,_t.log_interval);
}
let AlertTime=new Date('2020-11-18T10:39:00+03:00') ;
setMyTimer(()=>alert('Доставка!'), AlertTime.valueOf()-Date.now());
let reg=/^(?=.{7})(?!.{65})(?!.*[ёЁа-я])(?!.*[!@#$%^&\*\?])(?!.*(.)\1\1\1)(?!.*qwert)(?!.*1234)(?!password$)(?!.*\s).*/i
function getcontents($url){
if(filter_var($url,FILTER_VALIDATE_URL)) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
// ssl?
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
return file_get_contents($url);
}
echo getcontents('https://www.rusprofile.ru/id/11597949');