Ответы пользователя по тегу HTML
  • Почему появляется ошибка при многочисленных кликах на Play в HTML5 Audio tag?

    @theg4sh
    Попробуйте такой вариант:
    // перед началом проигрывания создать пустой audio объект
    (function () {
      var audio = document.createElement('audio');
      audio.src = 'http://.../blank.mp3';
      audio.load();
      window.audio_blank = audio;
    })();
    window.audio_break = function () {
      // в данном случае условно считаем this элементом audio (поправить если не так)
      // По идее данная операция должна прерывать текущие загрузки контента
      this.pause()
      this.currentTime = 0;
      this.src = window.audio_blank.src;
    };
    // Далее в цикле пробегаемся по всем audio и ставим хуки
    var audios = document.getElementsByTagName('audio');
    for(var i=0; i<audios.length; i++)) {
      audios[i].addEventListener('pause', window.audio_break);
    }

    Теперь перед вызовом play в UI делаем pause на текущем треке.
    Соответственно при динамике добавляем хук на каждый вновь создаваемый объект audio.

    Так же можно вообще динамически создавать объект audio, чтобы при смене трека его(объект) деинициализировать (читай удалять).

    Так же если вы используете один audio тэг для проигрывания, то стоит попробовать предварительно делать
    function play(audio, src) {
    audio.pause();
    audio.currentTime = 0;
    audio.src = src;
    audio.play();
    }


    З.Ы. код не проверял, просто оформил в виде идеи
    Ответ написан
    1 комментарий
  • Как удалить пробелы в XML с помощью XSLT?

    @theg4sh
    Muhammad я же правильно понял - "удаление лишних пробелов"?

    красиво и "мало кода" не получится - функция replace с поддержкой regexp доступна только для версии >=2.0.
    Для версии 1.0 единственное подходящее под задачу решение будет:
    <xsl:stylesheet version="1.1"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
        <xsl:template match="p">
            <xsl:copy-of select="."/>
        </xsl:template>
    
        <xsl:template match="dialog">
            <p class="dialog">
                <xsl:for-each select="./*|./text()">
                    <xsl:choose>
                        <xsl:when test="self::text()">
                            <xsl:value-of select="normalize-space(.)" />
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:text> </xsl:text>
                            <xsl:copy>
                                <xsl:copy-of select="./text()"/>
                            </xsl:copy>
                            <xsl:text> </xsl:text>
                        </xsl:otherwise>
                    </xsl:choose>
                </xsl:for-each>
            </p>
        </xsl:template>
    
    </xsl:stylesheet>

    Результатом будет:
    <?xml version="1.0"?>
    
        <p>Lorem ipsum dolor sit amet,</p>
    
        <p>Quibusdam dolore iure deleniti quasi accusantium non nostrum facere neque ducimus
        mollitia et ex suscipit, placeat, eius maiores ratione cumque. <b>Provident</b> doloribus
        natus perspiciatis quas id sequi neque, molestiae cupiditate facere quod. Dolore voluptate
        consectetur:</p>
    
        <p>aperiam nihil.</p>
    
        <p class="dialog">aperiam nihil. aperiam <b>123</b> nihil. aperiam nihil. <b>123</b> </p>

    Из минусов - будет ограничение на вложенное дерево элементов, хотя думаю можно допилить пример до использования шаблона в случае otherwise.
    Ответ написан
  • Возможно форму помещать в другую форму?

    @theg4sh
    Тег form не может содержать вложенный тег form по правилам стандарта, Степан Романов все верно указал.
    Насколько понял, вы хотите получить различный набор полей с одной страницы, тогда Вам стоит взглянуть на тег fieldset, Ref: htmlbook.ru/html/fieldset
    Он позволяет группировать поля формы и по необходимости отключать группу(ы) целиком, указав атрибут disabled только для fieldset.
    Ответ написан
    Комментировать