Разве мы не должны использовать элемент?



Я нашел несколько хороших минусов здесь:




  • элемент noscript только определяет, включен ли в браузере JavaScript или нет. Если JavaScript отключен в Брандмауэре, а не в браузере, то JavaScript не будет запущен и содержимое элемента noscript не будет отображаться.


  • многие скрипты зависят от конкретной функции или функций поддерживаемого языка, чтобы они могли работать (например документ.getElementById). Если необходимые функции не поддерживаются, JavaScript не может работать, но поскольку сам JavaScript поддерживается, содержимое noscript не будет отображаться.


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


  • элемент noscript является элементом уровня блока и поэтому может использоваться только для отображения целых блоков контента, когда JavaScript отключен. Он не может быть использован встроенный.


  • В идеале веб-страницы должны использовать HTML для содержимого, CSS для внешнего вида и JavaScript для поведения. Использование элемента noscript-это применение поведения изнутри HTML вместо того, чтобы применять его из JavaScript.



Источник:http://javascript.about.com/od/reference/a/noscriptnomore.htm



Я очень согласен с последним пунктом. Есть ли способ сделать и добавить внешний ? Должны ли мы разместить <noscript> на <head>?

542   11  

11 ответов:

лучше, чтобы значение по умолчанию было не javascript, а затем пусть код javascript перезаписывается с помощью страницы с включенным javascript. Не должно быть много. Может просто быть display:none; блок, который затем устанавливается в display:block; по javascript и наоборот для страницы, отличной от js.

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

<div id='noscript'>show non-js content</div>
<script>document.getElementById('noscript').style.display='none';</script>
<script id='required script'>show js content</script>

vs

<noscript>show non-js content</noscript>
<script id='required script'>//show js content</script>

в зависимости от ситуации, есть три случая для рассмотрения:

Case 1-Если требуется скрипт встроенный

отключен JavaScript

  • контент <noscript> элемент отображается немедленно, не-Яш содержание показано
  • контент <div> элемент появляется сразу, не-JS содержимое отображается

включен JavaScript

  • контент <noscript> элемент не появляется вообще, содержимое js показано
  • контент <div> элемент может на мгновение появиться перед скрытием, js содержание

в этом случае, используя <noscript> элемент выгодный.

случай 2 - Если требуется скрипт из внешнего (стороннего) источника, но скрыть <div> элемент выполняется с помощью встроенного скрипта

отключен JavaScript

  • контент <noscript> элемент появляется немедленно, содержание не-ДЖС показано
  • контент <div> элемент появляется сразу, не-JS содержимое отображается

JavaScript включен, но требуется скрипт заблокирован

  • контент <noscript> элемент не появляется вообще, ничего не показали!
  • контент <div> элемент может на мгновение появиться перед скрытием, ничего не показано!

JavaScript включен и необходимый скрипт получен

  • контент <noscript> элемент не появляется вообще, содержимое js показано
  • контент <div> элемент может появиться на мгновение раньше будучи скрытым, И. содержание

в этом случае, используя <noscript> элемент является выгодным.

Case 3-при необходимости скрипт скрывает <div> элемент

отключен JavaScript

  • контент <noscript> элемент появляется немедленно, содержание не-ДЖС показано
  • контент <div> элемент появляется сразу, не-JS содержимое отображается

JavaScript включен, но необходимый скрипт заблокирован

  • контент <noscript> элемент не появляется вообще, ничего не показали!
  • контент <div> элемент появляется, не-JS содержимое отображается

JavaScript включен и необходимый скрипт получен

  • контент <noscript> элемент не появляется вообще, содержимое js показано
  • контент <div> элемент может на мгновение появиться перед скрытием, js содержание

в этом случае, используя <div> элемент является выгодным.

в резюме

использовать <noscript> элемент, если рендеринг содержимого HTML зависит от сторонних скриптов или если требуемый скрипт является встроенным. В противном случае, используйте <div> элемент и убедитесь, что нужный скрипт содержит:

document.getElementById('noscript').style.display='none';

хотя у Tor Valamo есть элегантный ответ на эту проблему, есть проблема, которая может заставить вас отказаться от использования этой техники.

проблема (обычно) IE. Он имеет тенденцию загружать и выполнять JS немного медленнее, чем другие браузеры, заставляя его иногда мигать "Пожалуйста, включите свой Javascript" div за долю секунды до того, как он загрузит JS и скроет div.

это раздражает, и чтобы обойти это, вы можете реализовать "классику". <noscript> подход редирект.

<head>
<noscript><meta http-equiv="refresh" content="0; URL=/NO_SCRIPT_URL/ROUTE_HERE"/></noscript>
</head>

Это самая надежная техника, с которой я сталкивался в отношении этой маленькой неприятности.

одно полезное приложение для noscript, которое я видел, предназначено для прогрессивно расширенной асинхронной загрузки тяжелого контента (особенно "ниже сгиба"). Большие изображения, iframes и т. д. может быть обернут в noscript в источнике HTML, а затем развернутые элементы могут быть добавлены на страницу с помощью JavaScript после того, как DOM будет готов. Это разблокирует страницу и может значительно ускорить начальную загрузку, особенно если ваш интерфейс зависит от взаимодействий JS/JQ, применяемых после документа готов (2 секунды против 6 секунд для страницы портфолио, с которой я консультировался).

в эти дни кажется, что почти каждый браузер работает Javascript, но вы никогда не можете знать, кто будет получать доступ к вашему сайту. В эти дни даже скринридер и web crawlers используйте Javascript, а иногда делайте запросы AJAX, если это необходимо.

тем не менее, если вы собираетесь вернуться к no-Javascript, есть гораздо лучший способ, чем <noscript> тег. Просто сделайте это в HEAD документ:

<script type="text/javascript">
    document.getElementsByTagName('html')[0].className += ' Q_js'; // better than noscript
</script>

С этой техникой, вы можете легко обратиться к Q_js класс в CSS, чтобы скрыть вещи. С помощью <noscript> тег, лучшее, на что вы можете надеяться, это включить дополнительный файл CSS для переопределения предыдущего CSS. Это становится важным, когда некоторые элементы со статическим контентом должны быть скрыты сразу (не мерцают), пока Javascript не сделает их более динамичными.

короче говоря, техника, которую я предложил, решает все ваши минусы 1-5, и я считаю, что это строго лучше, чем использовать <noscript>.

простая ideea в это время ваш сайт может адаптироваться к использованию javascript на медленных устройствах, используя тег noscript как сущность для всего содержимого вашего сайта* * (ваш html должен быть готов к отсутствию javascript, и все элементы управления должны работать также, если javascript выключен, пользователи, использующие основные элементы управления html, смогут делать все, что они делали раньше, когда javascript был active.So <noscript></noscript> может быть динамическим переключением на тот же контент другим способом с теми же результатами=решение проблема, которая является причиной того, что пользователи открывают ваш url).**Вы можете видеть, что независимо от того, есть ли javascript или нет, функциональность веб-сайта может быть "одинаковой" в любых случаях JS включена / отключена.На китайских медленных устройствах, например: Samsung neo mini phone этот метод может запускать веб-сайт без каких-либо задержек при низком интернет-трафике.. попробуйте запустить этот сайт автоматическая двойная функциональность, если JS-это вкл/выкл случаях:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
<HEAD>
<TITLE>noscript can change the Internet forever</TITLE>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
$(document).ready(function(){
    $('noscript').replaceWith(function() {
        return this.textContent || this.innerText;
    });
    $("p#javascripton").css("background-color", "yellow"); 
    $("p").click(function(){
        $(this).hide();
    });
}); 
//-->
</SCRIPT>
<noscript>
<p>
Noscript's usage today can be logical for <a href="http://google.com/"><p id="javascripton">eg pc/laptop/high quality tablets usage the complete website with all features:images high resolution,javascript<br><h1>OR without javascript so no high resolutions images inserted with a jquery automated script generated from some php+javascript scripts so have usage for 80% mobile application cause almost are from China ,so low quality products=low cpu,low ram :IN THIS CASE SOMEONE CAN THINK TO SWITCH HIS PHONE TO NO JAVASCRIPT USAGE SO IF ANY PROGRAMMER CAN ADAPT AN ENTIRELY APPLICATION TO THE METHOD I USED IN THIS EXAMPLE AUTOMATED HIS BROWSER IS ADAPT FOR ANY RANDOM ACTION ABOUT THE USER CHOISE(YOU UNDERSTAND "TO USE OR NOT JAVASCRIPT") SO HIS CHINESE PHONE CAN BE APROXIMATELLY APROACH LIKE QUALITY OF SPEED EXECUTION THE OTHERS PC/LAPTOPS/TABLETS QUALITY PRODUCTS.<BR><BR>This stupid example is the best example how no script tag can change the quality of services on this planet ,boost the speed of the internet connection and stops unnecessary use of A LOT OF INTERNET TRAFFIC on slow devices..a simple tag can change the entirely dynamic of programmer's views so entirely Planet's beneficts</h1><p></a> <br>
run this code in two instances :<br>with browser javascript enable <br>and without(browser's javascript disable or eg a firefox plugin noscript states on/off)
</p>
</noscript>
</BODY></HTML>

и сказать больше об этом .. правый noscript был изобретен, чтобы работать как a триггер, когда js отключен ,но вы можете обойти эту функцию, чтобы изменить ход функциональности интернета о том, как сейчас, чтобы изменить его динамику....

в (надеюсь ближайшем) будущем, вы сможете использовать в CSS скрипта:

@media (scripting: none) {
    /* styles for when JS is disabled */
}

Я создаю полную высоту, полную ширину, положение:фиксированный div на всех страницах с некоторым идентификатором .

<div id='noscript_div' style='position:fixed;z-index:20000000;height:100%;width:100%;line-height:100%;'>enable JS buddy</div>
$('#noscript_div').hide();
$(document).ready(function(event){




});

Я не специалист . Это сработало для меня . Извините, но этот случай подойдет только в том случае, если вы хотите, чтобы у пользователя всегда был включен javascript

Как и все вещи, использовать правильный инструмент для работы.

Если вы используете Google Maps API, у вас есть статическое изображение через тег, и оно заменяется динамической картой JS. Google недавно начал взимать плату за все, таким образом, с приведенным выше примером это будет стоить вам дважды, один раз для статического и один раз для динамического. Статическая карта актуальна только в том случае, если JS отключен. Поэтому, чтобы сэкономить двойную оплату, мне кажется, лучшим решением является обернуть тег для статической карты в a метка.

элемент "noscript"не поддерживается в XML или в полиглоте XHTML5, поэтому не рекомендуется W3C.

Мне также не нравится идея, что каждая страница начинается с не-скриптового видимого div, который затем скрывается каким-то Javascripted circus trick на каждой странице веб-сайта. Опасные и более скриптовые зависимости, которые могут потерпеть неудачу или вызвать хаос, если их изменит более поздний разработчик.

лучшая стратегия заключается в разработке вашего сайта с базовым дизайном html, который обертывает вокруг всего внутреннего скриптового контента, чтобы пользователь, по крайней мере, видел дизайн страницы с заголовком и местом, где появится основное содержимое. Если его пустой его довольно очевидно, они не могут просматривать содержимое по какой-либо причине. Затем я бы добавил крошечный значок сообщения или информации в нижнем колонтитуле, сказав, что если вы не видите контента, ваш javascript отключен. Это появляется независимо от того, видят ли они содержимое сценария или нет. Это решение скриптов бесплатно.

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

Это не так сексуально, как предоставление альтернативного контента или окна сообщений, но в случае тяжелых угловых веб-сайтов вам все равно придется создать для них новую страницу контента, если сценарии будут отключены. Это решение также не учитывает поддержку сценариев в user-agent по сравнению с отключенной поддержкой и делает вашу веб-страницу 100% XML и HTML5 совместимой со всеми агентами пользователей, избегая тега noscript.

Я рекомендую вам не использовать <noscript> , вы можете использовать следующий код:

<HTML>
<head>
<script>
     window.location="some-page.php";
</script>
</head>
<body>
<p>
    Please active JavaScript .
</p>
</body>
</HTML>

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

Comments

    Ничего не найдено.