window.functionName = undefined; // где functionName - это имя стираемой функции
var test = '<div>'+
'text'+
'<div>'+
'text2'+
'</div>'+
'</div>';
$('div').append(test);
var test = `
<div>
text
<div>
text2
</div>
</div>
`;
$('div').append(test);
<div onclick="this.querySelector('source').setAttribute('src', this.querySelector('source').getAttribute('data-src')); this.removeAttribute('onclick');" class="video-block">
<video id="my-player" class="video-js" controls data-setup='{}'>
<source data-src="./video/blum/2.mp4" type="video/mp4"></source>
</video>
</div>
for (var n = 0; n < arr.length; n++) {
console.log(arr[n]['name']);
}
// По готовности страницы, вешаем на форму обработчик onsubmit инлайново:
document.addEventListener('DOMContentLoaded', function() {
document.querySelector('form#userForm').setAttribute('onsubmit', 'event.preventDefault(); form_send(this);');
});
// Функция для отправки формы на чистом JavaScript:
function form_send(form) {
form.setAttribute('onsubmit', 'event.preventDefault();');
var url = form.getAttribute('action') + '?nocache=' + new Date().getTime();
var xhr = new XMLHttpRequest(); xhr.open('POST', url);
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
form.setAttribute('onsubmit', 'event.preventDefault(); form_send(this);');
if (xhr.status === 200) {
alert('Форма успешно отправлена, ответ сервера: ' + xhr.responseText);
}
else {
console.log('При отправке формы произошла ошибка, ниже объект с деталями ошибки:');
console.dir(xhr);
alert('При отправке формы произошла ошибка, детали смотрите в консоли.');
}
}
}
xhr.send(new FormData(form));
}
<?php
// Устанавливаем тип документа и его кодировку:
header('Content-Type: text/html; charset=utf-8');
// Включаем показ ошибок:
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
// Записываем в переменную текущую дату и время:
$data = date('d-m-Y H:i:s');
// Выводим скрипт:
echo '<script type="text/javascript">
let d = "'.$data.'";
alert(d);
</script>';
?>
// Записываем в переменную str, какой-нибудь текст:
str = prompt('Введите что-нибудь', '');
// Из полученного текста удаляем все, что не является цифрой:
str = str.replace(/[^0-9]/g, '');
// Если после чистки кол-во символов в переменной str больше нуля:
if (str.length > 0) {
alert('Введенный текст содержит цифры!');
}
// Если иное:
else {
alert('Введенный текст НЕ содержит цифр!');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/localforage/1.9.0/localforage.js"></script>
result = await localforage.setItem('key', save_data);
console.log('Данные успешно сохранены:');
console.dir(result);
result = await localforage.getItem('key');
console.log('Данные успешно извлечены:');
console.dir(result);
...установка политики, которая включает «unsafe-inline», не будет иметь никакого эффекта.
Начиная с Chrome 46, встроенные скрипты можно добавить в белый список, указав в политике хэш исходного кода в кодировке base64. Этот хэш должен иметь префикс используемого алгоритма хеширования (sha256, sha384 или sha512).
'content_security_policy': Ignored insecure CSP value "'unsafe-inline'" in directive 'script-src'.
googleTableParse('https://docs.google.com/spreadsheets/d/<код документа>/edit');
// Функция для парсинга Google таблицы:
async function googleTableParse(link) {
var url = link.replace(/edit$/g, 'export?format=zip');
var response = await fetch(url);
var zip = await response.blob();
var archive = await new JSZip().loadAsync(zip);
var files = Object.keys(archive.files);
var lists = Object.create(null);
for (var n = 0; n < files.length; n++) {
if (!files[n].includes('/') && files[n].includes('.html')) {
var blob = await archive.files[files[n]].async('blob');
var html = await blob.text();
var name = files[n].replace(/\.html$/g, '');
lists[name] = tableParser(html);
}
}
console.log('Таблица и все листы в нём успешно спарсены:');
console.dir(lists);
}
// Функция для парсинга html-кода таблицы из скачанного архива:
function tableParser(html) {
var doc = new DOMParser().parseFromString(html, "text/html");
var th = doc.querySelector('table > tbody > tr').querySelectorAll('th, td');
var title = [];
for (var i = 0; i < th.length; i++) {
title.push(th[i].innerText);
}
var tr = doc.querySelectorAll('table > tbody > tr');
var array = [];
for (var i = 1; i < tr.length; i++) {
var td = tr[i].querySelectorAll('th, td');
var obj = {};
var add = 0;
for (var y = 1; y < td.length; y++) {
td[y].innerHTML = td[y].innerHTML.replace(/\<br\>/g, '{перенос строки}');
obj[title[y]] = td[y].innerText.replace(/\{перенос строки\}/g, "\n").trim();
if (obj[title[y]] !== '') {
add = 1;
}
}
if (add) {
array.push(obj);
}
}
return array;
}