2015-11-18 2 views
0

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

Qualtrics.SurveyEngine.addOnload(function() 
{ 
    var surv1date=new Date("${e://Field/day1date}"); 
     surv1date.setHours(0); 
     surv1date.setMinutes(0); 
     surv1date.setSeconds(0); 
     surv1date.setMilliseconds(0); 

    var one_day=86400000; 

    var difference = Math.abs(todayDate.getTime() - surv1date.getTime())/one_day + 1; 
    Math.round(difference); 

var intCount = 1; 
var daydiff = null; 

    do {  
    //$('daydiff').value = Math.round(difference); 
    Qualtrics.SurveyEngine.setEmbeddedData('daydiff', Math.round(difference)); 
    daydiff = Math.round(difference); 
    intCount++; 
} 
while (intCount <= 10 && (daydiff == undefined || daydiff == null || daydiff == NaN || isNaN(daydiff) == true)); 

    var strday = "on Day "; 
    var strfinal = strday.concat(daydiff); 
    var newQuestionText = questionText.replace("on Day", strfinal); 

    $(this.questionContainer).down('.QuestionText').innerHTML = newQuestionText; 

}); 
; 

На мобильных устройствах, оказывается, что иногда этот код не работает правильно и daydiff не рассчитывается, но в других случаях он работает отлично. Он будет работать один день, а не следующий на том же телефоне, в том же браузере, то же самое. Я настроил его на цикл вычисления daydiff до 10 раз, думая, что это может изменить ситуацию. Мы видели проблему как на устройствах iOS, так и на Android, но никогда на настольном устройстве. На этих устройствах был включен Javascript. Есть идеи?

ответ

1

Я не знаю, почему он не работает на мобильных устройствах, но две идеи:

1) Я не вижу, где вы определяете todayDate как объект даты. Вам не нужны:

var todayDate = new Date(); 

перед разницей расчета?

2) Вы можете взять устройство и браузер из уравнения, вызвав простой веб-сервис из потока опроса, чтобы выполнить расчет. Это может быть простой скрипт php, который вы передаете day1date, и он возвращает разницу. Побочным преимуществом является то, что вы будете использовать постоянный источник времени.

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