main
- главная обертка для сменяемой части кода(условно шапка и подвал у вас не меняются).section
- используется для выделения смысловых блоков, как вы и указали. ...установка политики, которая включает «unsafe-inline», не будет иметь никакого эффекта.
Начиная с Chrome 46, встроенные скрипты можно добавить в белый список, указав в политике хэш исходного кода в кодировке base64. Этот хэш должен иметь префикс используемого алгоритма хеширования (sha256, sha384 или sha512).
'content_security_policy': Ignored insecure CSP value "'unsafe-inline'" in directive 'script-src'.
.block {
overflow-y: auto;
scrollbar-width: none; // firefox
}
.block::-webkit-scrollbar { // остальные браузеры
height: 0;
}
$text = "строка которую нужно удалить/строка которую нужно оставить";
$done = strstr($text, '/');
echo $done;
/строка которую нужно оставить
<head>
и пораньше, так это только потому, что им выгодно, чтобы сначала загрузилась их аналитика и уже только потом сам документ // Пример функции для отправки файла в виде Blob на сервер:
function send_blob_to_server(blob, url) {
var formData = new FormData();
formData.append('file', blob, blob.name);
var xhr = new XMLHttpRequest();
xhr.open('POST', url);
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
alert('Запрос выполнен успешно, ответ сервера: ' + xhr.responseText);
}
else {
alert('При выполнении запроса произошла неизвестная ошибка!');
}
}
}
xhr.send(formData);
}
// Для использовани функции первым параметром передаете Blob,
// а вторым параметром адрес куда надо отослать ваш Blob:
send_blob_to_server(audioBlob, 'https://qna.habr.com/q/846401');
function getFri(now) {
var d = new Date(now.getFullYear(), now.getMonth() + 1, 0);
d.setDate(d.getDate() + [-2, -3, -4, -5, -6, 0, -1][d.getDay()]);
let diff = (d.getTime()-now.getTime())/1000;
let days = Math.floor(diff/(60*60*24));
diff%=60*60*24;
let hours = Math.floor(diff/(60*60));
diff%=60*60;
let min = Math.floor(diff/60);
diff%=60;
diff = Math.floor(diff)
return `${days} дней ${hours} часов ${min} минут ${diff} секунд`;
}
alert(getFri(new Date()));
.comment-item.active .comment-item__form {
display: block;
}
const itemSelector = '.comment-item';
const buttonSelector = '.comment-item__reply';
const activeClass = 'active';
document.addEventListener('click', e => {
const item = e.target.closest(buttonSelector)?.closest(itemSelector);
if (item) {
document.querySelectorAll(itemSelector).forEach(n => {
n.classList.toggle(activeClass, n === item);
});
}
});
const text = document.querySelector('.class');
document.onclick = function(e){
if ( event.target.className != 'class' ) {
// ваша другая функция
};
};
removeEventListener
не то, что передавали в addEventListener
. Смотрите сами:document.addEventListener('click', clickerOut(parent));
document.removeEventListener('click', clickerOut);
clickerOut(parent)
и clickerOut
- это что по-вашему, одно и то же? Никак нет.function clickerOut(parent) {
return function handler(e) {
...
document.removeEventListener('click', handler);
}
}
Можно ли как-то перебирать массив так чтобы в переборе участвовали только записи с заполненными значениями?
Если да то как это сделать?
$arr = [
"0,0" => [],
"1,0" => ["test1"],
"2,0" => [],
"3,0" => ["test2"],
"4,0" => [0],
"5,0" => [],
"6.0" => "0",
"7.0" => 0
];
$new_arr = array_filter($arr, function($element) {return !empty($element);});
//или
//$new_arr = array_filter($arr);
print_r($new_arr);
/*
Array
(
[1,0] => Array
(
[0] => test1
)
[3,0] => Array
(
[0] => test2
)
[4,0] => Array
(
[0] => 0
)
)
*/