Страницы

Поиск по вопросам

Показаны сообщения с ярлыком браузер. Показать все сообщения
Показаны сообщения с ярлыком браузер. Показать все сообщения

четверг, 9 апреля 2020 г.

Сохранение положения скролла при возврате на страницу

#javascript #jquery #браузер

                    
Есть страница А. Мы опустились в самый низ и перешли по ссылке на страницу В.  

Как сохранить положение окна (в данном случае самый низ страницы) по возврату на
страницу А?
    


Ответы

Ответ 1



На событии $(window).unload(...) сохранить позицию скролла страницы в локальном хранилище или куках. При возврате проверять наличие сохраненного значения и мотать до сохраненного значения.

воскресенье, 8 марта 2020 г.

Как перехватить кнопку “назад” браузера?

#javascript #http #button #кэширование #браузер


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

Как перехватить событие возврата на страницу, чтобы можно было ее обновить?
    


Ответы

Ответ 1



В комментариях верно написали, что ответ кроется не в перехвате события "назад" у браузера, а сохранении состояния страницы Например, пользователь может изменить тему страницы. Что бы при возвращении на эту страницу, была выбрана нужная тема, сохраним ее в localStorage const savePageState = (name, state) => { localStorage[name] = state; } const loadPageState = (name) => { return localStorage[name]; } Дальше, при нужных вам событиях, вы просто сохраняете в localStorage нужные вам данные, а при загрузке страницы (onload событие, например) выгружаете нужные данные и используете их

Ответ 2



Раз пользователь может изменить вид страницы, значит, работает javascript. В нем надо при обработке пользовательских действий подменить последний элемент в истории браузера, чтобы возврат происходил уже на указанную вами страницу (или тот же адрес, но с параметрами). Вот пример. Код скрипта: $('.portfolio_filter').each(function(){ var $this_filter = $(this); $this_filter.on('click', 'a', function(){ var project_type = $(this).data('optionValue').slice(1); var url = window.location.href; if (url.indexOf('?') >= 0) { url = url.slice(0, window.location.href.indexOf('?')); } if (project_type) { url = url + '?type=' + project_type; } // console.log('url: ' + url); window.history.replaceState(null, document.title, url); return false; }); }); При клике не кнопку на странице в историю дописывается url типа http://sws-group.zephyrlab.ru/projects/?type=commercial После просмотра проекта категории commercial возврат идет уже на url с ?type=commercial.

Ответ 3



Перехватить событие возврата на страницу не получилось, задача решена другим способом. Я добавил на стороне сервера в http-заголовок Cache-Control значения no-store, must-revalidate, как написано здесь: https://stackoverflow.com/questions/49547/how-to-control-web-page-caching-across-all-browsers Таким образом, при нажатии "Назад" страница автоматически обновляется браузером вообще без использования дополнительного кода JavaScript. Сделанные пользователем изменения при этом не теряются, т.к. они до этого были сохранены на сервере. При обновлении страницы по F5 также получаем с сервера самое последнее состояние страницы. Если бы состояние хранилось не на сервере, пришлось бы дописать немного JavaScript-кода (для работы с localStorage или куками), но history.replaceState я бы использовать не стал. Вместо хранения состояния (на стороне клиента) в history, гораздо удобнее хранить то же самое состояние в localStorage.

среда, 26 февраля 2020 г.

Удаление “ссылок” из истории браузера

#windows #браузер


Предыстория

История накопилась приличная, в добавок ещё и синхронизация включена.
Чтобы хоть как-то "уменьшить объём" истории, решил удалить какие-то бесполезные сайты
оттуда, допустим VK (>23к ссылок в истории)

Проблема

Если в поиске вбить vk.com - то выдаст все сайты, это логично, при выделение всех
(Ctrl+A) получаем больше 23 тысяч ссылок, нажимаем Delete - ложится браузер.
Весело, неправда ли?

Вопрос

Удалять вручную, долго и муторно.
Есть ли какие-нибудь варианты?
Допустим наличие папки в системе?
Код какой-нибудь? :D

Использую Mozilla, Windows x64



Чую щас минусы полетят.
    


Ответы

Ответ 1



Первый способ рабочий, но оказался не рабочим для Вас. Есть 2 вариант, редачить sqlite. Он рабочий, но до конца я с ним не разобрался, по сути по каждому вашему визиту по определенным ссылкам- создается уникальный ID, это сделано для того, чтобы вывести "самые посещаемые сайты". Потому надо будет сначала сделать как сейчас я расскажу, а после использовать 1 вариант, но по сути, должно сработать. [ 1 ] Щёлкните по кнопке меню > Справка > Информация для решения проблем > Ищем кнопку "Открыть папку" в разделе "Сведения о приложении". В итоге- мы открыли папку с вашим профилем, который вы сейчас используете. Запомните, places.sqlite это и есть бд со всеми данными(история, закладки и т.п.) [ 2 ] Качаем программу для редактирования формата sqlite, я выбрал DB Browser-первая какая попалась+с нормальным функционалом. (ссылка на скачку: >>x32(86)<< | >>x64<< ) P.S разместил у себя на веб сервере. Для недоверчивых-(>>VTx32<< |>>VTx64<<), ну или качайте с офф.сайта. [ 2.5 ] Устанавливаем, после чего копируем путь который мы открыли (1 шаг,если что) (если кто не знал, кликаем по полю, и CTRL+A and CTRL+C) [ 3 ] Заходим в программу, нажимаем "Открыть базу данных", и вставляем путь, который скопировали> нажимаем "Открыть", после чего у вас будет каталог, в том каталоге ищем places.sqlite > Открываем [ 4 ] Нажимаем "Данные">Выбираем moz-places в выпадающем списке с БД (либо в начальном окне правой кнопкой в Таблицах на moz-places>Просмотр данных) [ 5 ] В поле "Фильтр"(url) ищем ваш сайт [ 6 ] Выделяем всё (CTRL+A) и сверху над поиском есть кнопка "Удалить запись" (Не используйте Delete- т.к. не удалит таблицы) [ 7 ] Так как ваши заходы на сайт(а точнее их количество) храниться, вам прийдеться снова зайти на сайт, и воспользоваться моим способом(который я показал выше)

Ответ 2



Все есть встроено, далеко ходить не пришлось) Заходим в Настройки>Библиотека>Журнал>Показать весь журнал>Выбираем сайт который хотим удалить(правой кнопкой мыши)>забыть сайт В картинках Настройки Библиотека Журнал Показать весь журнал ПКМ и забыть сайт Результат:

вторник, 25 февраля 2020 г.

Сайт в IE показывается по умолчанию в режиме совместимости

#html #internet_explorer #браузер #кроссбраузерность


Почему сайт http://skb.sfolt.ru/ показывается по умолчанию в режиме Стандарт, а http://milliommetr.ru/miko7
- в режиме совместимости? Как сделать так, чтобы у всех пользователей при переходе
на этот сайт стоял режим Стандарт? Если дело в доктайпах, проверила все страницы на
сайте, везде доктайп есть.    


Ответы

Ответ 1



Используйте следующий тэг: Если есть возможность, вместо edge указывайте конкретную версию IE. Например, 8 или 10. Использовать edge следует с осторожностью, поскольку: Веб-разработчикам рекомендуется использовать этот режим только на тестовых страницах. Возможны непредсказуемые результаты при рендеринге контента страницы в будущих версиях Windows Internet Explorer. Кроме того, если у пользователя режим совместимости включен по умолчанию, то этот тэг не сработает. Нужно будет использовать особые заголовки. с помощью php или с помощью .htaccess (используется в HTML5 Boilerplate) Header set X-UA-Compatible "IE=Edge,chrome=1" # mod_headers can't match by content-type, but we don't want to send this header on *everything*... Header unset X-UA-Compatible Вопрос: Почему IE может переходить в "режим совместимости" на моем сайте? Ответ: На это есть несколько причин ранее при просмотре сайта была нажата кнопка "просмотр в режиме совместимости"; переключение произошло автоматически из-за некоего контента, вызвавшего ошибку рендерера IE и вынудившего его откатиться на старую версию рендерера; режим совместимости был включен по умолчанию для всех сайтов; IE посчитал сайт частью вашей интрасети и переключился в режим совместимости; сайт попал в список Microsoft, как сайт, требующий включения режима совместимости;

Ответ 2



Вот подробная схема взаимодействия IE и режима документов: Determining IE9’s Document Mode

суббота, 15 февраля 2020 г.

Используется ли во всех браузерах независимо от ОС перевод строки \r\n?

#linux #windows #http #браузер #apple


Добрый день! Наткнулся на информацию, что в разных операционных системах перевод
строки пишется по-разному:

Windows - \r\n

Apple - \r

Linux - \n

Но также где-то писали, что HTTP протокол независимо от системы использует \r\n.

Кому верить?
    


Ответы

Ответ 1



формат заголовков http соответствует спецификации, изложенной в rfc822. согласно секции 3.1.2 rfc822, поле заголовка должно заканчиваться двумя символами — возврат каретки (carriage-return, cr, в ascii — шестнадцатиричное значение 0d) и перевод строки (line-feed, lf, в ascii — шестнадцатиричное значение 0a): Once a field has been unfolded, it may be viewed as being composed of a field-name followed by a colon (":"), followed by a field-body, and terminated by a carriage-return/line-feed. в теле же сообщения (это может быть и html-страница, и вообще всё что угодно, например, просто бинарные данные), конечно, могут встретиться любые символы в любой комбинации.

пятница, 24 января 2020 г.

Выполнение функции при закрытии окна браузера

#javascript #ajax #браузер


Пытаюсь сделать счётчик посетителей сайта, я видел его на множестве ресурсов, но
что-то не задалось. 

Есть база, в которой хранится число посетителей, есть php-скрипт, который должен
добавлять в базу +1 при входе юзера (это работает с событием ready) и -1 при его выходе
с сайта (с этим проблема). Есть функция, которая отправляет ajax-запрос на этот php-скрипт,
и есть событие onbeforeunload или unload, вызывающее функцию.

Не знаю, кто из этого списка виновный, но функция умудряется срабатывать аж после
закрытия страницы, при её следующей загрузке. То есть функция срабатывает только при
обновлении страницы или её восстановлении (cntrl+shift+T) даже раньше события ready,
но если страницу просто закрыть, то вообще никакого эффекта не будет. Тестировал только
в firefox, т.к. этот браузер приоритетен. 

Сам код:

HTML:




JS:

function putout() {
    $.ajax({
        type: "POST",
        url: "./php/process.php",
        data: {
            'function': 'putout',
            'def': def,
        },
        dataType: "json",
        success: function(data) {

        },
    });
}


PHP:

include ('./php/connect.php');
mysql_query("UPDATE numb SET numb=numb-1");


Ещё я наслышан о том, что опера и вовсе игнорирует эти события, тогда как вообще
кроссбраузерно реализовать счётчик посетителей сайта?

P.S. Текст уже тыщу раз переисправляли, это уже совсем не мой стиль изложения, примите
к сведению. Вообще ненавижу возможность лезть без спроса в мои публикации сторонним
людям, это ОЧЕНЬ раздражает.
    


Ответы

Ответ 1



Метод выполняется при загрузке страницы, но не срабатывает при выгрузке из-за некорректного использования. Этот код window.onbeforeunload = putout(); выполнит функцию сразу после загрузки скрипта, еще до готовности страницы. В то же время, к событию не присоединится никакой хэндлер, так как функция вернёт undefined. Чтобы указать хэндлер для события, надо убрать вызов метода: window.onbeforeunload = putout; Теперь функция не будет вызываться при старте, а будет вызываться перед выгрузкой. В любом случае, это некорректный подход к подсчету пользователей.

четверг, 23 января 2020 г.

Background-repeat или обычное изображение

#css #браузер


Есть фоновая картинка заданная как backround-image в css - весит 27кб.
Есть "паттерн" который можно задать так же через css и "размножить" по блоку background-repeat.
Весит 113 байт.

Какой из вариантов будет быстрее грузиться чисто теоретически? В одном случае нужно
просто загрузить изображение большего объема, во втором изображение меньше, но браузеру
его нужно "Размножить" на блок.
    


Ответы

Ответ 1



Произвести профайлинг рендеринга довольно трудно. Но это и не нужно. Вполне может оказаться, что разницы нет или она незначительна. А если под словом "грузиться" вы подразумеваете загрузку изображения с сервера, то тут точно разница будет минимальная. Вы можете легко убедится в этом сами посмотрев timlene в инструментах разработчика брузера Google Chrome. Метод заполнения повторениями используют все реже потому, что его часто можно заменить чистым CSS3 без использования изображений вообще, например используя repeating-linear-gradient как упомянул в коментариях @Artem Gorlachev

среда, 22 января 2020 г.

Как подсказать браузеру где на странице брать контент для Режима чтения?

#html #css #firefox #браузер


Я об этой функции в Firefox:



Существует ли какой-то html-тег для этого, или можно дать блоку какой-то класс для
обозначения "главного" текста на странице? 

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

Взять тот же Хабр, в этой статье кнопка появляется, а в этой нет. 
    


Ответы

Ответ 1



Ответ прост - соблюдать семантику в HTML-разметке. Рекомендую прочитать про HTML5-теги. Согласно его стандартам, основной текст на странице нужно помещать в Тег article. Как это реализовано, можно посмотреть на примере моей последней работы. Там реализована семантическая разметка и сайт отлично читается на мобильном Safari. На Windows не проверял, но скорее всего там принцип работы идентичный.

пятница, 10 января 2020 г.

Где в реестре Windows указывается браузер по умолчанию?

#windows #браузер #реестр


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

С ассоциациями файлов понятно, их перечислять не надо.
    


Ответы

Ответ 1



Дефолтный бразузер может быть разным для разных протоколов. Ассоциации протоколов работают так же, как ассоциации файлов: HKEY_CLASSES_ROOT\http\shell\open\command где HKEY_CLASSES_ROOT - это результат мержа HKEY_CURRENT_USER\Software\Classes и HKEY_LOCAL_MACHINE\Software\Classes. UP: начиная с висты, ассоциации протоколов пишутся еще и в HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http так что стоит проверять оба варианта. Длинная статья с подробностями: How Does Your Browser Know that It’s Not The Default.

Ответ 2



Включи RegMon, запусти какой нить Chrome и сделай ему set default browser и смотри результат.

четверг, 9 января 2020 г.

Почему браузер считает валидным сертификат от другого домена?

#ssl #браузер


Сейчас только обратил внимание, что на сайте ru.stackoverflow.com установлен сертификат
*.stackexchange.com -- и вообще-то браузеры должны предупреждать при заходе на сайт
о невалидном сертификате.



Тем не менее -- в строке браузера стоит зелёный замок, соединение защищено. Почему
так происходит?

Насколько я понимаю -- должно выдаваться сообщение "SSL_ERROR_BAD_CERT_DOMAIN", типа
такого:


    


Ответы

Ответ 1



А вы загляните в раздел X509v3 Subject Alternative Name, в нем как раз перечисляются прочие домены, для которых данный сертификат будет действителен: DNS:.stackexchange.com, DNS:stackoverflow.com, DNS:.stackoverflow.com, DNS:stackauth.com, DNS:sstatic.net, DNS:.sstatic.net, DNS:serverfault.com, DNS:.serverfault.com, DNS:superuser.com, DNS:.superuser.com, DNS:stackapps.com, DNS:openid.stackauth.com, DNS:stackexchange.com, DNS:.meta.stackexchange.com, DNS:meta.stackexchange.com, DNS:mathoverflow.net, DNS:.mathoverflow.net, DNS:askubuntu.com, DNS:.askubuntu.com, DNS:stacksnippets.net, DNS:.blogoverflow.com, DNS:blogoverflow.com, DNS:.meta.stackoverflow.com, DNS:*.stackoverflow.email, DNS:stackoverflow.email

понедельник, 6 января 2020 г.

Как подключить свой JavaScript к чужому сайту?

#javascript #браузер


У меня нестандартная задача.
Вопрос:
Как подключить к сайту свой JavaScript ?

Т.е. к примеру, загрузился сайт в ВКонтакте, а в нем, кроме его скриптов, загружен
еще мой , например кнопка нажимая на которую происходит клиент по не прочитанному сообщению.

Знаю, что в браузере возможно подключать CSS, но возможно ли это сделать для JavaScript
 с последующим подключением Bootstrap ? 

Если есть какие нибудь предложения и идеи буду очень признателен.
    


Ответы

Ответ 1



Как подключить JavaScript или CSS без доступа к сайту? подключаемся не стесняемся не проходм мимо добавляем свой любимый плагин в сравнительную таблицу лично я, рекомендую User JavaScript and CSS | имя | версия | браузер | JS | CSS | имп | эксп | обл | ред | ру | - | |-------------------------|--------|-----------|----|-----|-----|------|-----|-----|----|---| | User JavaScript and CSS | 1.2.5 | C | Y | Y | Y | Y | Y | Y | Y | - | | Tampermonkey | 4.5 | С/F/S/E/O | Y | | / | / | - | Y | Y | - | | Stylish | 1.9.2 | C/F/S/O | | Y | Y | - | Y | - | - | - | | - | - | - | - | - | - | - | - | - | - | - | | имя | версия | браузер | JS | CSS | имп | эксп | обл | ред | ру | - | | колонка | описание | - | сокращение | название браузера | |---------|-------------------------------|---|------------|-------------------| | версия | рассмитриваемая здесь версия | - | С | Chrome | | браузер | C/F/S/E/O | - | F | Firefox | | имя | имя расширения | - | S | Safari | | JS | JavaScript | - | E | Microsoft Edge | | CSS | CSS (не через JS а напрямую) | - | O | Opera Next | | имп | импорт скрипта | - | - | - | | эксп | экспорт скрипта | - | - | - | | обл | храние на сервере / ?социалки | - | - | - | | ред | редактор кода | - | - | - | | ру | поддержка русского языка | - | - | - | | - | - | - | - | - | | ячейка | описание | |--------|----------| | Y | да | | | нет | | - | не знаю | | / | отчасти | | - | - | User JavaScript and CSS 1.2.5 Свои JavaScript и CSS на любом сайте. Userscript и userstyle — расширение позволяет запускать собственные скрипты и стили оформления на любых сайтах. JavaScript и CSS подключаются мгновенно, еще до загрузки страницы, поэтому результат выходит без задержек. Преимущества: Мгновенный запуск Возможность добавлять свои библиотеки Система URL масок позволяет гибко изменять список сайтов к которым будут применены изменения chrome.google.com/webstore В Н И М А Н И Е !! НАСТРОЙКИ -> БИБЛИОТЕКИ Tampermonkey 4.5 Это бесплатное расширение браузера и самый популярный менеджер пользовательских скриптов для браузеров на базе Blink и WebKit, таких как Chrome, Microsoft Edge, Safari, Opera Next, и Firefox. ... Кроме того, есть хорошие шансы на то, что несовместимые скрипты будут нормально работать при использовании Tampermonkey. сайт Stylish 1.9.2 Стильный интернет со Stylish, пользовательским менеджером стилей. Устанавливайте темы и скины для многих сайтов и создавайте свои. ... Stylish предлагает темы и скины для сайтов и веб-аппликаций со всего мира, таких как ✔ Поисковые машины – Google, Baidu, Yahoo ✔ Социальные сети - Facebook, Twitter, Reddit, Whatsapp, Instagram, WeChat ✔ Сайты для разработчиков – Stackoverflow, Github, JIRA, Thunderbird ✔ Браузеры – Chrome, Firefox, Opera, Safari ... Важная информация! Мы охраняем конфиденциальность ваших личных данных ... нам необходимо собирать данные о вашей активности в интернете ... Подробнее об этом – в нашей Политике конфиденциальности на странице: userstyles.org/login/policy.

Ответ 2



Расширение GreaseMonkey. Можно использовать чтобы писать js код для любой страницы.

суббота, 4 января 2020 г.

console.log('hello',)

#javascript #windows #console #браузер


Не знал как назвать, кто придумает по умнее, буду признателен.
Проблема в том, что PhpStorm не подчеркнул и я упустил из виду:

console.log('hello',)

Данная конструкция роняла сайт на windows машинах, когда на mac все работало.
Не знаю как искать, но как по спецификации, допускается ли такое?  

По мне дак вполне нормально, вторая переменная undefined.
    


Ответы

Ответ 1



Давайте откроем стандарт языка ECMA-262 7-редакция от июня 2016. Смотрим как вызываются у нас функции 12.3.4 Function Calls. Как видим при вызове функции ей передается объект Arguments. Который определяется следующим образом. Arguments[Yield] : ( ) ( ArgumentList[?Yield] ) То есть он может быть либо пустым, либо передаваться как ArgumentList. ArgumentList : AssignmentExpression ArgumentList , AssignmentExpression Как видим список состоит из значений AssignmentExpression, которые разделены запятыми. Тут начинается самое сложное в стандарте, так как AssignmentExpression это целая куча различных вариантов значений. AssignmentExpression: ConditionalExpression YieldExpression ArrowFunction LeftHandSideExpression LeftHandSideExpression AssignmentOperator AssignmentExpression AssignmentOperator : one of *= /= %= += ‐= <<= >>= >>>= &= ^= |= **= То есть мы может указывать просто кучу всяких видов параметров: условные выражения, стрелочные функции, различные комбинации выражений, итераторы и многое другое. Но в общем-то нас интересует простейший вариант: LeftHandSideExpression. LeftHandSideExpression: NewExpression CallExpression Дальше идет целая вакханалия ссылок. Но в итоге все сводится либо к различным выражениям, либо в нашем случае к простейшим IdentifierName и Identifier. А они в свою очередь имеют такое определение: IdentifierName :: IdentifierStart IdentifierName IdentifierPart IdentifierStart :: UnicodeIDStart $ _ \ UnicodeEscapeSequenc То есть в любом случае должны быть хотя бы одна буква Юникода и таким образом AssignmentExpression не может состоять из пустоты. Там обязательно должно идти хоть что-то, иначе было бы в стандарте AssignmentExpression помечен опционально (opt) для ArgumentList. P.S. - И пусть потом кто-то попробует сказать, что стандарты это легко.

среда, 1 января 2020 г.

Как отследить DevTools состояние?

#javascript #google_chrome #браузер #google_chrome_devtools


Возможно ли по средствам JavaScript отследить что пользователь зашел на старицу с
уже открытой панелью разработчика DevTools ? (не только для Chrome но и для других
браузеров) 
    


Ответы

Ответ 1



Вот такой способ, о котором я писал ранее в комментариях. function debuggerOpened() { console.log('debugger opened') } let last = Date.now() setInterval(function() { debugger; let now = Date.now() now - last > 500 && debuggerOpened(); last = now; }, 10)

Ответ 2



Можно попробовать еще вот такой подход. При открытом DevTools console.log будет работать медленнее, чем при закрытом. Данный метод не очень хорошо работает в Firefox, там надо подобрать другие функции работы с консолью. const arr = new Array(5000).fill(Math.random().toString('36')).join(' '); const delay = getDelay(arr) * 2; delayTime.textContent = delay; var isOpen = null; setInterval(() => { const arr = new Array(5000).fill(Math.random().toString('36')).join(' '); const time = getDelay(arr); isOpen = time > delay; currentTime.textContent = time; consoleStatus.innerText = isOpen ? 'opened' : 'closed'; }, 1000); function getDelay(data) { var t = performance.now(); console.log(data); return performance.now() - t; }


Ответ 3



Это решение использует тот факт, что toString() не вызывается для зарегистрированных объектов, если консоль не открыта. var devtools = /./; devtools.toString = function() { this.opened = true; } console.log('%c', devtools); // devtools.opened will become true if/when the console is opened

вторник, 31 декабря 2019 г.

Пиксельная линейка в chrome

#google_chrome #браузер


После переустановки Chrome пропала пиксельная линейка. Говорят, что ее как-то можно
включить, если не врут, подскажите как. Спасибо.
    


Ответы

Ответ 1



F12 → сочетание клавиш Ctrl+Shift+M. F12 → вторая сверху слева кнопка панельки (Toggle Device Mode): Чтобы включить также показ линий, ограничивающих элемент на этой линейке нужно включить опцию "Show Rulers". Жмём F12 → F12 и ставим галку в пункте General → Elements → Show Rulers: Вот что получается: Можно не включать "Device Mode", тогда пиксельные линейки будут появляться только при инспектировании элемента.

Почему сайты не доступны по ip адресу?

#url #ip #dns #браузер #домен


Почему, если вбить в поисковую строку браузера ip-адрес сайта вместо url он будет
не доступен? Если я не ошибаюсь, браузер не откроет сайт по ip-адресу, даже если у
сайта ip выделенный.
    


Ответы

Ответ 1



Это зависит от настроек сервера и вида веб-сервера. Обычно, если специально ничего не делать, и сайт только один на сервере, то он будет открываться и по IP адресу. Несложно сделать так, чтобы для неизвестных доменов, и для запросов без заголовка Host, откры­вался ка­кой-то специально предназначенный сайт с одной страницей с объяснениями. Например, в случае nginx такой специальный сайт должен быть помечен параметром default_server. Если мы говорим о каком-то массовом виртуальном хостинге, то обычная практика делать имен­но так, то есть ограничивая доступ к серверу по IP. Никто не хочет выслушивать жалобы от недо­вольного клиента, сайт которого, по случаю оказавшийся первым в списке, откры­ва­ется при вво­де в адресную строку какого-то другого домена, который по любой причине ука­зывает на IP сервера. Владелец того другого домена тоже не будет рад такому развитию событий. Если ваш сайт работает по HTTPS, то одной настройки сервера будет недостаточно. Нужно будет получить SSL сертификат и для домена, и для IP адреса. Последнее не всегда возможно.

понедельник, 30 декабря 2019 г.

Как узнать поддерживается ли html тег в определенной версии браузера?

#html #браузер #кроссбраузерность #спецификация


Хочу узнать, какие теги поддерживаются в старых браузерах. Например, взять теги small,
big bgsound и другие. Хочу узнать с какой версии браузеров они начинают поддерживаться
(mozilla, ie, chrome, safari, opera)? Есть ли где-нибудь официальная информация? Или
даже если не официальная, но та, которая соответствует действительности, может сервис
какой? Т.к. в интернете на разных сайтах информация разнится касаемо поддержки в разных
версиях браузеров
    


Ответы

Ответ 1



Проверяю на сайте webref.ru. Нужно ввести тег/элемент синтаксиса CSS в соответствующую форму, и не требуется дополнительно жать на Enter. Материалы сайта написаны квалифицированными профессионалами. Главный редактор — «веб-разработчик, автор нескольких книг, посвящённых созданию сайтов, HTML и CSS. Кандидат технических наук.» Русский язык. Частые обновления информации. На страницах указывается дата обновлений. Указывается статус в спецификациях: А если тег в них не входит, как в Вашем случае с , приводится следующее сообщение: Дополнительная информация о тегах/элементах синтаксиса CSS. Если что-то осталось неясным, возможность оставлять комментарии, на которые есть шанс получить квалифицированный ответ. Если Вы верстаете сайты в Sublime Text, для ускорения работы можно воспользоваться плагином FindDoc. Выделяете необходимый элемент синтаксиса HTML/CSS → нажимаете заданное сочетание → получаете результат в браузере. Необходимо настроить плагин на Webref. Preferences → Key Bindings → в правую pane вставляете следующий код: // FindDoc Webref { "keys": ["ctrl+alt+keypad9"], "command": "find_doc_selection", "args" : {"url" : "https://webref.ru/html/%s#field_html_browser"}, "context": [ { "key": "selector", "operand": "text.html.basic" } ] }, // FindDoc Webref { "keys": ["ctrl+alt+keypad9"], "command": "find_doc_selection", "args" : {"url" : "https://webref.ru/css/%s#field_css_browser"}, "context": [ { "key": "selector", "operand": "source.css" } ] }, Параметры: "keys" — ваш шорткат, выбираете произвольный, незанятый. "command": "find_doc_selection" — запуск FindDoc. url" : "https://webref.ru/html/%s#field_html_browser", — URL, который откроется в браузере по умолчанию. %s — переменная, вместо неё подставится то, что мы выделили. В примере было выделено text-align, значит, откроется https://webref.ru/css/text-align#field_css_browser. Если предпочитаете Can I use, значение параметра URL будет следующим: http://caniuse.com/#search=%s. "key": "selector" — аргумент означает, что команда будет работать только в файлах, имеющих область видимости, назначенную в параметре "operand". "operand": "source.css" — область видимости. text.html.basic для HTML и source.css. Если мы запустим команду в HTML-файле, откроется ссылка, прописанная для HTML, в CSS-файле ссылка для CSS. Если мы нажмём Сtrl+Alt+Keypad9, например, в js-файле, то в браузере ничего не откроется, поскольку аргументами мы ограничили действие команды find_doc_selection html и css файлами. Однако по тому же образцу можно настроить для области видимости JavaScript — source.js — открытие ссылки на JavaScript.ru или другом сайте.

Ответ 2



http://caniuse.com/ - вводите название тега/css фичи и смотрите https://modernizr.com/ - позволяет силами JS в рантайме определять поддержку элемента в текущем окружении

Ответ 3



Кроме всего прочего, никогда не помешает зайти на W3C - тех, кто занимается спецификацией тегов непосредственно. Там всегда можно найти свежую информацию касательно новых и старых тегов и их применения. В частности, по вашему вопросу о bgsound они пишут следующее: No, really. Don't use it. И варианты альтернатив приводят, если таковые есть и необходимы.

суббота, 28 декабря 2019 г.

Самый быстрый (короткий) способ крашнуть вкладку [закрыт]

#javascript #jquery #framework #webbrowser #браузер


        
             
                
                    
                        
                            Закрыт. На этот вопрос невозможно дать объективный ответ.
Ответы на него в данный момент не принимаются.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Хотите улучшить этот вопрос? Update the question so it
can be answered with facts and citations by editing this post.
                        
                        Закрыт 6 месяцев назад.
                                                                                
           
                
        
Как, используя минимум символов, уронить вкладку браузера / уйти в вечный цикл или
рекурсию или что-то в этом духе?

Предлагайте свои варианты на чистом js или с использованием фреймворков.
    


Ответы

Ответ 1



Или такой цикл например :D while(1);

Ответ 2



Один из самых коротких способов открыл для себя недавно. Он на jquery. $($) *Спасибо всем, кто принял участие. Очень занятно было наблюдать за комментариями.

Ответ 3



19 символов for(let a;;a+=" ");

Ответ 4



Немного поигрался в консоли, написал банальное зацикливание. Пару секунд и страница мертвая. Я так понимаю заканчивается слишком большой объект получается. function crash(){ let i = 1; let a = {}; while (i > 0){ a[i] = i++; console.log(a); } } crash()

Ответ 5



Столько вариантов, предложу и я интересный) while(true) { window.open(); } for(;;) {}

пятница, 13 декабря 2019 г.

Свой css для сайтов в браузере

#html #css #браузер


Подскажите, пожалуйста, расширение или что-то подобное, что сможет сохранить мои
личные CSS для сторонних сайтов. К примеру, у ВКонтакте background: #edeef0;, а я хочу
поменять на свой цвет, чтобы при перезагрузке страницы дописывались стили через !important
или inline.
    


Ответы

Ответ 1



Расширения для браузера - Stylish Ответ дан пользователем: diraria.

Ответ 2



Использую User JavaScript and CSS для Хрома. Шикарная штука

Ответ 3



Если требуются только стили без скриптов, то подойдёт User CSS - можно настраивать стили для конкретных сайтов, включать или выключать расширение. Использую его для некоторый модификаций SO. К сожалению, это расширение добавляет стили только после загрузки страницы. В связи с сезоном шляп пришлось сменить его на другое.

Ответ 4



Расширение Stylebot добавляет стили немедленно, не дожидаясь загрузки страницы, что очень удобно в случаях, когда требуется немедленное применение стилей (пример). Только надо переключить режим редактирования в Edit CSS:

воскресенье, 8 декабря 2019 г.

Скрипт некорректно работает в браузере Internet Explorer. Как исправить?

#javascript #jquery #internet_explorer #браузер #прокрутка


Скрипт некорректно работает в браузере Internet Explorer. Во время прокрутки происходит
сильное дерганье блока то вверх то вниз. Как исправить?



$(function() {
    var $hor = $("#horizontal");
    $("body").css('padding-bottom', $(window).width()*2);
    var delta = 0;
    $(window).on('scroll', function () {
        var top = $(document).scrollTop();
        var width = $(window).width();
        var lim = $hor.position().top - (delta) - ($(window).height() - $hor.outerHeight())
/ 2;
        delta = Math.min(Math.max(top - lim, 0), width * 2);

        $(".horizontal:first", $hor).css({left : delta});
        $(".horizontal:last", $hor).css({left : -(width*2 - delta)});
        $("body").css({'padding-top': delta, 'padding-bottom': width*2 - delta});
    });
});
p {
    height: 500px;
}
#horizontal {
    position: relative;
    overflow: hidden;
    width: 100%;
    font-size: 3em;
    margin: 0;
    padding: 0;
    height: 250px;
}
#horizontal .horizontal {
    position: absolute;
    width: 100%;
    left: -100%;
    padding: 20px;
}
#horizontal .horizontal .h_blockquote {
    position: relative;
    width: 100%;
    margin: 0 auto;
    font-size: 24px;
    line-height: 1.3em;
    color: #000;
}

test

Скрипт некорректно работает в браузере Internet Explorer. Как исправить? Скрипт некорректно работает в браузере Internet Explorer. Как исправить?
Скрипт некорректно работает в браузере Internet Explorer. Как исправить? Скрипт некорректно работает в браузере Internet Explorer. Как исправить?

test


Ответы

Ответ 1



Исправить нельзя, потому что вначале происходит движение по event scroll и только потом срабатывает функция на scroll. (Вначале страница поднемается, а потом добавляется padding к bady). Как вариант, отлавливать прокрутку ролика мышки: (в коде надо только правельно выставить границы) var boo = true; var delta = 10; $("body").css('height', "6000px"); var $hor = $("#horizontal"); $(document).ready(function() { $('body').bind('mousewheel', function(e) { var width = $(window).width(); if (e.originalEvent.wheelDelta / 120 > 0) { boo = false; $("body").css("overflow", "inherit"); if ($(document).scrollTop() < 250 && !boo && (delta > 0 - $(".h_blockquote_wrap").width())) { $("body").css("overflow", "hidden"); delta -= 10; $(".horizontal").css({ left: delta + "px" }); if (delta < 0 - $(".h_blockquote_wrap").width()) { $("body").css("overflow", "inherit"); boo = true; } } } else { boo = true; $("body").css("overflow", "inherit"); if ($(document).scrollTop() > 250 && boo && (delta < $("#horizontal").width())) { $("body").css("overflow", "hidden"); delta += 10; $(".horizontal").css({ left: delta + "px" }); if (delta > $("#horizontal").width()) { $("body").css("overflow", "inherit"); boo = false; } } } }); }); p { height: 500px; } #horizontal { position: relative; overflow: hidden; width: 100%; font-size: 3em; margin: 0; padding: 0; height: 250px; outline: 2px solid red; } .horizontal { display: block; position: absolute; width: 100%; left: -100%; padding: 20px; float: left; } .h_blockquote { position: relative; width: 100%; margin: 0 auto; font-size: 15px; line-height: 1.3em; color: #000; }

test

Скрипт некорректно работает в браузере Internet Explorer. Как исправить?

test



воскресенье, 1 декабря 2019 г.

Как на сайте заблокировать F12?

#javascript #html #jquery #браузер


Как сделать так, чтобы при нажатии F12 на сайте не появлялось окно с исходным кодом?
    


Ответы

Ответ 1



Никак.

Ответ 2



Насчет кроссбраузерности не уверен, но в огнелисе работает. UPD. демо

Ответ 3



Ага. сначала F12, потом скажете нужно еще ctrl + u заблокировать, потом еще что-то.. Поэтому поддерживаю @ReinRaus. Проще сразу сказать заказчику что такое сделать нельзя! :)

Ответ 4



Ну так попробуй document.onkeypress = function (event) { event = (event || window.event); if (event.keyCode == 123) { //alert('No F-12'); return false; } } document.onmousedown = function (event) { event = (event || window.event); if (event.keyCode == 123) { //alert('No F-keys'); return false; } } document.onkeydown = function (event) { event = (event || window.event); if (event.keyCode == 123) { //alert('No F-keys'); return false; } } var message="Эх ты, мамке расскажу"; function clickIE() {if (document.all) {(message);return false;}} function clickNS(e) {if (document.layers||(document.getElementById&&!document.all)) { if (e.which==2||e.which==3) {(message);return false;}}} if (document.layers) {document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;} else{document.onmouseup=clickNS;document.oncontextmenu=clickIE;} document.oncontextmenu=new Function("return false") function disableCtrlKeyCombination(e) { var forbiddenKeys = new Array('a', 'n', 'c', 'x', 'v', 'j' , 'w'); var key; var isCtrl; if(window.event) { key = window.event.keyCode; if(window.event.ctrlKey) isCtrl = true; else isCtrl = false; } else { key = e.which; if(e.ctrlKey) isCtrl = true; else isCtrl = false; } if(isCtrl) { for(i=0; i

Ответ 5



Добавьте еще одно такое же окно. Вроде и не блокировка, но озадачит противника. Для этого нужно попытаться отслеживать характерные изменения window.innerHeight, происходящие при открытии окна. P.S. И зачем это апнули 4 года спустя...