javascript
  • html5
  • jsf-2
  • asynchronous-javascript
  • 2015-06-24 4 views 3 likes 
    3

    Асинхронная загрузка Java-скрипт показывает следующее сообщение об ошибке:Асинхронная загрузка Java скрипт показывает ошибку

    Attribute name "async" associated with an element type "script" must be followed by the ' = ' character. + jsf

    Я нашел это в моем JSF2.4 приложение, которое использует файл шаблона template.xhtml. DOCTYPE является

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:c="http://java.sun.com/jstl/core" 
    xmlns:wiz="http://www.tolven.org/jsf/wizard" 
    xmlns:p="http://primefaces.org/ui" 
    xmlns:trim="http://www.tolven.org/jsf/trim"> 
    

    Эта ошибка выходит, когда я использую HTML 5 DOCTYPE, но это вызывает некоторые другие ошибки, так как XHTML DTD не найден.

    Так что я попробовал атрибут async="async" вместо того, чтобы просто использовать async. Тогда все ошибки исчезли.

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

    ответ

    2

    Как вы можете прочитать здесь https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script, «асинхронный» - это атрибут HTML5, поэтому вы должны использовать другой способ для асинхронного загрузки вашего javascript.

    Одним из трюков может быть перемещение вашего скрипта непосредственно перед закрывающим тегом.

    Вы также можете использовать использование «require.js», так как этот ответ предлагает: Load async resource with requirejs timeout

    +0

    Интересно, почему этот атрибут HTML-не допускается, если я использую только «асинхр». Асинхронная загрузка работает нормально, когда я использую async = "async". Я проверил это, включив 2 файла js на странице, а второй - первый. Когда оба они загружаются с использованием атрибута async = "async", 2-я js сообщила об ошибке, поскольку первая из них не была доступна в то время. Также я использую некоторые проверки HTML 5 через JSF, и все работает нормально. –

    +1

    Поскольку вы используете Strict DTD, и в этом режиме вы не можете использовать атрибуты без значений. Если вы это сделаете, хотя Transitional DTD, я уверен, что у вас нет никаких проблем. В любом случае, я уверен, что атрибут async не работает с HTML4. Если это так, то это потому, что браузер дает вам этот сахар, при строгом HTML4 этот атрибут не имеет никакого значения. Более подробную информацию можно найти здесь: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script – dlopez

    +0

    хм, спасибо! Интересно, как работают другие функции HTML 5. Версия JSF, которую я использую, поддерживает HTML 5, но я уверен, что шаблон для страницы с указанным выше DOCTYPE. –

     Смежные вопросы

    • Нет связанных вопросов^_^