Nano Hash - криптовалюты, майнинг, программирование

Как деактивировать кнопку воспроизведения в IE после воспроизведения звука?

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

Я хочу, чтобы пользователи больше не могли слышать (даже если они нажимают кнопку «Воспроизвести историю») после появления кнопки «Нажмите, чтобы продолжить».

Now that you know how the auditory stories will sound, you are ready to listen to and comprehend the two auditory stories in this study. The first auditory story is titled, “The Honey Gatherer’s Three Sons.” Press the “Play Story” button to begin listening to the story; after you have finished listening to the story, you will answer a set of questions about the story.
<div>&nbsp;
<p>&nbsp;</p>

<audio controls="" id="audio2" style="display:none"><source src="http://langcomplab.net/Honey_Gatherers_Master.webm" style="width:50%" type="audio/webm" /> <source src="http://langcomplab.net/Honey_Gatherers_Master.mp3" style="width:50%" type="audio/mp3" /> Your browser doesn&#39;t support this audio format.</audio>
</div>

<p>&nbsp;</p>

<div><button name="play" onclick="disabled=true" style="height:25px; width:200px" type="button">Play Story</button></div>

а вот джаваскрипт:

Qualtrics.SurveyEngine.addOnload(function()
{
    /*Place Your Javascript Below This Line*/
    var aud = document.getElementById('audio2');
    this.questionclick = function(event,element){

        if((element.type == "button") && (element.name == "play"))
        {
            aud.play();
        }

    }


});

ОБНОВЛЕНИЕ: я изменил его на следующее в HTML:

<div><button name="play" style="width: 200px; height: 25px;" type="button">Play Story</button>

и следующее в js:

Qualtrics.SurveyEngine.addOnload(function()
{
    /*Place Your Javascript Below This Line*/
    var aud = document.getElementById('audio1');
    this.questionclick = function(event,element){
        if((element.type == "button") && (element.name == "play"))
        {
            aud.play();
            element.disabled = true;
        }
    }

});

Но все же, после воспроизведения звука и отображения кнопки «Продолжить», пользователь может нажать кнопку «Воспроизвести историю» в IE и снова прослушать ее, в то время как в других браузерах этого не происходит. Есть ли какой-либо вариант в JavaScript или HTML5, чтобы пользователь не мог воспроизводить звук после его воспроизведения, который может работать для IE?


  • На какой версии IE не работает? 26.06.2014
  • IE11 для Win7 не работает 26.06.2014
  • какой код вы используете для привязки функции прослушивателя к событию клика? 26.06.2014
  • Я использую qualtrics, и мне просто нужно передать правильный звук в js, который я добавил. Я не уверен, что это правильно, но в других браузерах он работает правильно. Можете ли вы объяснить немного больше о том, что вы сказали? 26.06.2014
  • Трудно сказать, в чем проблема, так как я не вижу весь код. попробуйте убрать disabled=true с кнопки, а в JS добавить element.disabled = true сразу после aud.play() 26.06.2014
  • @levi спасибо, я попробовал ваш метод, но, к сожалению, он пока не работает для IE. Не могли бы вы взглянуть на обновленный вопрос и сообщить мне, можете ли вы придумать другое решение, чтобы попробовать? 26.06.2014
  • IDK, если это сработает, но вы можете попробовать enable=false 26.06.2014

Ответы:


1

Я не уверен, почему IE не делает то, что вы хотите, но я думаю, никто никогда не понимает, почему IE отвечает так, как он.

Однако вы можете захотеть объединить два действия в функции questionClick. (Возможно, обработчик события onClick останавливает срабатывание атрибута onClick.) Например:

Qualtrics.SurveyEngine.addOnload(function()
{
    /*Place Your Javascript Below This Line*/
    var aud = document.getElementById('audio2');
    this.questionclick = function(event,element){

        if((element.type == "button") && (element.name == "play"))
        {
            aud.play();
            // remove the element
            element.parentNode.removeChild(element);
            // or set it to disabled, what you like
            element.disabled = true;
        }

    }


});

Не забудьте удалить атрибут onClick с кнопки:

<div><button name="play" style="height:25px; width:200px" type="button">Play Story</button></div>

Вы также можете установить переменную при загрузке страницы. Проверьте его, прежде чем начать играть, а затем установите его снова. Пример:

// Set a variable
var hasPlayed = false;
Qualtrics.SurveyEngine.addOnload(function()
{
    /*Place Your Javascript Below This Line*/
    var aud = document.getElementById('audio2');
    this.questionclick = function(event,element){

        if((element.type == "button") && (element.name == "play"))
        {
            // Check if audio hasn't played before
            if(hasPlayed == false) aud.play();
            // Flip the variable to make sure it won't play on next click
            hasPlayed = true;
        }

    }


});
25.06.2014
Новые материалы

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

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..