За последние 24 часа нас посетил 58421 программист и 1782 робота. Сейчас ищут 813 программистов ...

Простая сложная задача

Тема в разделе "PHP для новичков", создана пользователем ivanisoff, 8 апр 2018.

  1. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    Есть страница, в самом верху которой подключается скрипт, и в нем есть код

    if(apcu_fetch($_SERVER['REMOTE_ADDR'])[5]!==1) {
    echo '<noscript>
    <meta http-equiv="refresh" content=\'0; url = temp_page.php\' />
    </noscript>';
    }

    Ведет странно себя верстка из-за этого, как бы придумать чтобы проверить наличие яваскрипта у клиента до загрузки страницы, при этом не поломав верстку.

    Если я скрипт подключу в сайте после строки
    <!DOCTYPE html> то все норм, я не хочу например загружать страницу вообще если отключен яваскрипт, можно как то выкрутится?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    забить болт на попытки детектировать отключённый js и исходить из допущения, что он есть у всех и включён у всех.
     
  3. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    это не решение проблемы)
    --- Добавлено ---
    Я детектирую его без проблем, только изза этого ведут себя хаточино элементы верстки, например textarea не грузит данные, input меняют немного отступы
     
  4. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    А кто его отключать умеет?
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    старые кнопочные мобильники. Бабули и то с айфонами 10 во дворе бегают
     
  6. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    @MouseZver Я пошутить пытался :cool: Всё равно интернетом на старых кнопочных мобилках не пользуются, разве что вап сайтами специально под них, не знаю остались ли такие ещё
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты создаёшь себе проблему сам. в этом проблема. зачем тебе знать, включен ли js?
     
  8. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Решение достаточно странное, нафига тут мета тэг вообще? Куда ты его засовываешь head, body? В футере (перед </body>)
    Код (Text):
    1. <noscript><img src="is_no_js.php"></noscript><script>document.addEventListener('DOMContentLoaded', function() { document.querySelector('html').classList.remove('no-js'); });</script>
    а в тэге html класс no-js, а там уже стили рисовать для класса .no-js. А ты уверен что включен показ картинок? Может iframe использовать? А если браузер новый и айфреймы не работают? Ты уверен что вообще браузер умеет рисовать css. Проблема на пустом месте. Хочешь что бы везде выглядело одинаково, отдавай плаин текст, но один хрен шрифт будет другим :D
     
  9. karmay

    karmay Активный пользователь

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    Автору, видимо хочется не потерять ту часть клиентов, которая где-то за углом ночью услышала историю про ява-скрипт майнеров, и полезла гуглить, как вырубить ява-скрипт в браузере, чтобы не намайнили.. по мне, так не нужны такие клиенты, пусть еще свет вырубят, вместе с яваскриптом и до IE5 откатятся
     
    Walk нравится это.
  10. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    Просто получается такая конструкция
    <!DOCTYPE html> Подключенный скрипт
    <noscript>
    <meta http-equiv="refresh" content=\'0; url = temp_page.php\' />
    </noscript>


    <!DOCTYPE html>
    код страницы пошел

    Реально ли такое сделать? мнения о том нужно или нет делать не интересует, я не про это спрашивал. Я спросил идеи о том как реализовать именно эту конструкцию.
    --- Добавлено ---

    В этом вся и фишка что это не в коде страницы самой, а над ней, и если его нет, страница вообще не будет грузится, в этом вся и сложность, если бы это было в коде страницы проблем нету естественно, то тут другая история
     
  11. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Не вижу проблем :cool:
    1. Положить болт на тех у кого нет js
    2. Засунуть эту херь в код страницы что бы не было проблем
    --- Добавлено ---
    3. Ещё вариант
    HTML:
    1. <style>.no-js {
    2.   position: fixed;
    3.   top: 0;
    4.   left: 0;
    5.    right: 0;
    6.   bottom: 0;
    7.   color: white;
    8.   background: red;
    9.   font-size: 40px;
    10.   text-align: center;
    11. }</style>
    12.   <div class="no-js">Включи JS! НЕМЕДЛЕННО! А здесь маленькая инструкция возможно....</div>
     
  12. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    Спасибо за ответы, поставлю вопрос прямо. Реально ли сделать такую конструкцию как я описал? не пихая в код страницы проверку.
    Да или нет?
     
  13. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Нужно пихать код, так что нет
     
    ivanisoff нравится это.
  14. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    про реальность отсутствия скрипта (нет, не случай noscript, а отсутствие нужного скрипта):
    Роскомнадзор косит адреса из пулов CDN просто блеять вслепую из пулемёта. поэтому вероятность, что чья-то легальная страничка вдруг лишится JS достаточно реальна.
    --- Добавлено ---
    или в результате слишком агрессивного adblock…

    для тупых: это не значит, что надо отказываться от javascript или от CDN :) это значит, что показ какого-то маркера типа "у вас проблемы с загрузкой javascript" был бы хорошим тоном.
    --- Добавлено ---
    «выключите AdBlock или смените место жительства»
     
    igordata нравится это.
  15. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    Как расценивать ваш пост, так мысли вслух или что?
     
  16. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    вы таки почему спрашиваете?
     
  17. ivanisoff

    ivanisoff Новичок

    С нами с:
    12 фев 2018
    Сообщения:
    47
    Симпатии:
    0
    чета я вас не понимаю, что вы хотите сказать
     
  18. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Я делаю так, и то на всякий случай. В самом верху страницы:
    HTML:
    1. <div style="width:100%; height:50px; background-color: red; color: white;">
    2. <p>У вас отключен JavaScript.</p>
    3. <p>Сайт может работать некорректно.</p>
    4. </div>
     
  19. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    ТС, не обращай внимания - просто дефицит общения, всем хочется потрепаться. :)

    По теме.
    1) А разве тег "meta" не обязан быть внутри тега "head" ? (см. https://webref.ru/html/meta )
    Попробуй, должно помочь.
    2) Проверь и исправь код.
    В html не должно быть подобного [\'0].