Попытка сделать мой оператор xAPI динамичным

У меня есть приложение, в котором кто-то входит в систему со своим полным именем и адресом электронной почты. Я фиксирую эту информацию в локальном хранилище HTML5. Я хочу затем использовать xAPI Youtube Video tracker для отправки сообщений в LRS. У меня проблемы с кодом, который помещает переменную локального хранилища в оператор actor. Когда я жестко кодирую имя и адрес электронной почты, он работает нормально. Когда я пытаюсь вытащить его из локального хранилища, он говорит: "Ни за что". Можете ли вы взглянуть на мой оскорбительный код и сказать, где я ошибаюсь? Я прокомментировал, что работает, а что не работает, прямо под ним. Большое спасибо.

var name = localStorage.getItem('name');
    var email = localStorage.getItem('email');  
    var video = "RXsHnGyVddg"; // Change this to your video ID

    // "global" variables read by ADL.XAPIYoutubeStatements
    ADL.XAPIYoutubeStatements.changeConfig({
      //"actor":  {"mbox":"mailto:molly.fisher@example.com", "name":"Molly Fisher"},
      "actor":  {"mbox":"mailto:" + email, "name": + name},
      "videoActivity": {"id":"https://www.youtube.com/watch?v=" + video, "definition":{"name": {"en-US":video}} }
    });

    function initYT() {
      var tag = document.createElement('script');
      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
    }

    var player;
    function onYouTubeIframeAPIReady() {
      player = new YT.Player('player', {
        height: '390',
        width: '640',
        videoId: video,
        playerVars: { 'autoplay': 0 },
        events: {
          'onReady': ADL.XAPIYoutubeStatements.onPlayerReady,
          'onStateChange': ADL.XAPIYoutubeStatements.onStateChange
        }
      });
    }

    initYT();


    // Auth for the LRS
    var conf = {
        "endpoint" : "https://lrs.adlnet.gov/xapi/",
        "auth" : "Basic " + toBase64("xapi-tools:xapi-tools"),
    };

    ADL.XAPIWrapper.changeConfig(conf);

    /*
     * Custom Callbacks
     */
    ADL.XAPIYoutubeStatements.onPlayerReadyCallback = function(stmt) {
      console.log("on ready callback");
    }

    // Dispatch Youtube statements with XAPIWrapper
    ADL.XAPIYoutubeStatements.onStateChangeCallback = function(event, stmt) {
      console.log(stmt);
      if (stmt) {
        stmt['timestamp'] = (new Date()).toISOString();
        ADL.XAPIWrapper.sendStatement(stmt, function(){});
      } else {
        console.warn("no statement found in callback for event: " + event);
      }
    }

0 ответов

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