JavaScript logo

Для шаринга и инвайта в Facebook / Instant Games нужно в качестве параметра image передать картинку, закодированную в base64. Можно сделать это в offline, но это увеличит размер дистрибутива и увеличит время загрузки игры. Значит это не наш метод.

Я делаю это в рантайме с помощью XMLHttpRequest и FileReader:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function toDataURL(url, callback) {
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var reader = new FileReader();
reader.onloadend = function() {
callback(reader.result);
}
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
}
function toDataURL(url, callback) { var xhr = new XMLHttpRequest(); xhr.onload = function() { var reader = new FileReader(); reader.onloadend = function() { callback(reader.result); } reader.readAsDataURL(xhr.response); }; xhr.open('GET', url); xhr.responseType = 'blob'; xhr.send(); }
function toDataURL(url, callback) {
   var xhr = new XMLHttpRequest();
   xhr.onload = function() {
      var reader = new FileReader();
      reader.onloadend = function() {
         callback(reader.result);
      }
      reader.readAsDataURL(xhr.response);
   };
   xhr.open('GET', url);
   xhr.responseType = 'blob';
   xhr.send();
}

И что бы было совсем хорошо, загружайте нужную картинку в фоне, тогда реакция на нажатие пользователем кнопки share/invite будет мгновенной.