Как мне справиться с этим? Код не проверяется: Noscript, чтобы компенсировать отсутствие JS, но также приспособления для мобильных пользователей - PullRequest
1 голос
/ 28 августа 2011

Хорошо, у меня есть тэг абзаца, в котором есть какой-то текст, и этот текст относится к направлению, в котором пользователь может смотреть для просмотра навигации (я знаю, что это не нужно, но что угодно).Теперь я пытаюсь убить 2 зайцев одним выстрелом, изменив это значение с «слева» на «верх» с помощью javascript (навигация обычно слева, в то время как на iphone, например, он выше);но эффективность приходит, когда я пытаюсь использовать noscript.

пример:

<script type="text/javascript">
  if(navigator.userAgent.indexOf('iPhone') > -1){
    document.getElementByClassName('navdir')[0].innerHTML = 'up';
  }
</script>

-------------

<p>
   look <span class="navdir">left<noscript><span> (or up, for mobile)</span></noscript></span>
   for the navigation section!
</p>

Самое классное, что innerHTML стирает дочерние узлы span.navdir, который является тегом noscript (иэто содержимое)!Мое предложение становится дружеским для людей, которым не хватает javascript, а также для людей, использующих iphone, или обоих!

Я был счастлив и все такое, пока не обнаружил, что оно не подтверждается.Я поднял это, и это связано с тем фактом, что noscript на самом деле является тегом блока, и не может быть внутри p, или span, и т. Д.

Как я могу проверить это, сохраняя при этом мою новую эффективность

Ответы [ 2 ]

1 голос
/ 28 августа 2011

Это грязный хак, и решение Юханы намного лучше, но я все равно упомяну:

<script>
    var style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = '.noscript{display:none;}';
    document.getElementsByTagName('head')[0].appendChild(style);
</script>
<p>
   look <span class="navdir">left<span class="noscript"> (or up, for mobile)</span></span>
   for the navigation section!
</p>
1 голос
/ 28 августа 2011

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

<script type="text/javascript">
  if(navigator.userAgent.indexOf('iPhone') > -1){
    document.getElementByClassName('navdir')[0].innerHTML = 'up';
  }
  else {
    document.getElementByClassName('navdir')[0].innerHTML = 'left';
  } 
</script>

-------------

<p>
   look <span class="navdir">left (or up, for mobile)</span>
   for the navigation section!
</p>

(Кстати, iPhone не единственное мобильное устройство, которое есть ...)

...