Определить, активна ли вкладка Qualtrics кроме одной страницы

Я пытаюсь подсчитать, сколько раз респондент покидает мой опрос Qualtrics при его заполнении, то есть сколько раз вкладка, на которой находится опрос, становится неактивной, размытой или невидимой. Я работаю с этим кодом в заголовке опроса Qualtrics, где leaveCount является внедренным объектом данных, добавленным в начало потока опроса со значением 0.

<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script>

<script>

Qualtrics.SurveyEngine.addOnload(function() {
    var count = "${e://Field/leaveCount}"
    $(window).blur(function(){
        count++
        Qualtrics.SurveyEngine.setEmbeddedData('leaveCount', count);
    });
});

</script>

Тем не менее, есть одна страница опроса (с одним вопросом "QID3"), когда их просят покинуть опрос на мгновение, и я не хочу, чтобы эта неактивность была включена в подсчет. Другими словами, я хочу, чтобы он считал бездействие на каждой странице, кроме этой.

Это две вещи, которые я пробовал, но они не работают. Вместо того, чтобы не считать страницу с "QID3", она больше не считается.

// attempt with .equals()
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script>

<script>

Qualtrics.SurveyEngine.addOnload(function() {
    String qid = Object.keys(Qualtrics.SurveyEngine.QuestionInfo)[0];
    var count = "${e://Field/leaveCount}"
    if (!”QID3".equals(qid)) {
        $(window).blur(function(){
            count++
            Qualtrics.SurveyEngine.setEmbeddedData('leaveCount', count);
        });
    };
});

</script>


// attempt with !=
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script>

<script>

Qualtrics.SurveyEngine.addOnload(function() {
    String qid = Object.keys(Qualtrics.SurveyEngine.QuestionInfo)[0];
    var count = "${e://Field/leaveCount}"
    if (Object.keys(Qualtrics.SurveyEngine.QuestionInfo)[0] != qid) {
        $(window).blur(function(){
            count++
            Qualtrics.SurveyEngine.setEmbeddedData('leaveCount', count);
        });
    };
});

</script>

Я не обычный пользователь Javascript, поэтому любая помощь будет принята с благодарностью.

2 ответа

Я не проверял это, но попробуйте следующее. По сути, идея Энтони, но просто ищет идентификатор QID3.

<script>
Qualtrics.SurveyEngine.addOnload(function() {
  var count = "${e://Field/leaveCount}";
    $(window).blur(function(){
        if (!$('QID3')) {
          count++;
          Qualtrics.SurveyEngine.setEmbeddedData('leaveCount', count);
        };
    });
});
</script>

Вместо того, чтобы помещать функцию размытия окна в if, вы хотите поместить размытие if в окно. что-то вроде этого должно работать, хотя я не проверял это.

// attempt with .equals()
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script>

<script>

Qualtrics.SurveyEngine.addOnload(function() {
  var qid = Object.keys(Qualtrics.SurveyEngine.QuestionInfo)[0];
  var count = "${e://Field/leaveCount}";
    $(window).blur(function(){
        if ( qid !== "QID3" ) {
          count++
          Qualtrics.SurveyEngine.setEmbeddedData('leaveCount', count);
        };
    });
});

</script>

Стоит также упомянуть, что JavaScript не является строго типизированным, поэтому "строка qid = ..." не будет работать. все переменные в JavaScript являются просто переменными.

Другие вопросы по тегам