Рубрика: WEB
Здесь собраны статьи, наработки, исправление ошибок и решение проблем связанных с разработкой для WEB
Копирование в буфер обмена на JavaScript
В JavaScript скопировать в буфер обмена можно только то что находится внутри тега <input>. Потому приходиться для копирования в буфер обмена произвольного текста приходиться идти на ухищрения в виде например временного помещения текста для копирования в input. Например как-то так:
1 2 3 4 5 6 7 8 9 10 11 |
<span style='cursor: pointer;' id='ipsegsw'>192.168.1.1</span> <script> $('#ipsegsw').click(function() { var $temp = $("<input>"); $("body").append($temp); $temp.val($('#ipsegsw').text()).select(); document.execCommand("copy"); $temp.remove(); console.log('IP скопирован в буфер обмена'); }); </script> |
Редирект с http на https на домене с сайтом WordPress
Задача: настроить редирект c http на https на сайте с движком WordPress.
Почему то обычно используемый мной трюк с директивой:
1 |
Redirect 301 / https://домен |
На WordPress сработал с ошибкой искажения переадрессации, если в части URL используется /
Потому пошел другим путем, добавил в .htaaccess перед директивами WordPress следующее:
1 2 3 4 5 6 7 8 9 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule> # BEGIN WordPress <IfModule mod_rewrite.c> ... |
Удаляем кукисы, время жизни которых более заданного
Задача: есть сайт, на котором кукисы устанавливаются движком. Где не известно. Настроек нет (или есть, но лень-не кому копаться). Необходимо принудительно сократить время жизни куков до заданного.
Решение:
Из сложных нюансов: браузер не позволяет читать время истечения жизни (и путь) установленных кукисов. От слова никак и вообще. Защита такая..
Ну если с путем всё в принципе не так важно — просто вставлять код трущий кукисы на КАЖДОЙ странице, а не только на «начальной», то кукисы прочитаются, то со временем жизни возможен только «хук». А именно: читаем все куки. Записываем все ключи куков в локасторадж браузера с датой истечения сегодня+(какое-то количество дней). При следующем открытии страницы — проверяем дату истечения в сторадже. Если меньше текущей — трем кукисы.
Код:
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 |
dayssavecookies=7; function deleteLCookie(name) { document.cookie.split(";").forEach(function(el) { if(!el.indexOf(name)) { var date = new Date(0); document.cookie = el + "=; path=/; expires=" + date.toUTCString(); } }); } function getAllCookies(){ var pairs = document.cookie.split(";"); var cookies = {}; for (var i=0; i<pairs.length; i++){ var pair = pairs[i].split("="); cookies[(pair[0]+'').trim()] = unescape(pair.slice(1).join('=')); } return cookies; } // получаю текущие куки браузера cooks_values=getAllCookies(); // получаю текущие сохраненные в сторадже куки - даты if (localStorage["cooks_dates"]==undefined){ ls_dates=new Map(); } else { ls_dates=JSON.parse(localStorage["cooks_dates"]) }; // если кука в сторадже нет, то добавляю, если истек - ту удаляю и из стораджа и из куков for (key in cooks_values) { console.log(key); console.log(cooks_values[key]); // если новый кук - добавляем if (ls_dates[key]==undefined){ console.log("--add to localstorage"); datec = new Date(Date.now() + 86400e3*dayssavecookies); ls_dates[key]=datec; }; // если кук истек в локальном хранилище - трём его в куках и в локальном хранилище if (new Date(ls_dates[key])<Date.now()){ delete(ls_dates[key]); deleteLCookie(key); }; } localStorage.setItem("cooks_dates", JSON.stringify(ls_dates)); |
Рабочий способ убрать кнопку закрытия диалога в jqueryui dialog
Гуглится способ как ни странно плохо. С трудом нашел рабочее решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<div id="wait_dialog" title="Идет загрузка.."> </div> <script> $("#wait_dialog" ).dialog({ autoOpen: false, resizable: true, height:'auto', width: 'auto', modal: true, closeOnEscape: false, open: function(event,ui) { $(".ui-dialog-titlebar-close", ui.dialog || ui).hide(); $(this).parent().children().children('.ui-dialog-titlebar-close').hide(); } }); </script> |