2013-05-06 3 views
1

В настоящее время я пишу расширение с помощью Crossrider, и мне нужно загрузить изображение напрямую с помощью URL-адреса для выполнения некоторой обработки изображения на нем. Однако событие onload, похоже, вообще не срабатывает.JavaScript Загрузить изображение из URL-адреса в расширении браузера Crossrider

Я делаю что-то неправильно или это возможно сделать в расширении браузера?

Вот соответствующий фрагмент кода:

var imga = document.createElement('img'); 
imga.src = obj.attr('href'); // URL of the image 
imga.style.display = 'none'; 
imga.onload = function() { 
     alert('Image loaded'); 
     var imgData = getImageData(imga, 0, imga.height - 3); 
     alert('Got Image data'); 
}; 

EDIT

Вот полный код

function readImage(obj) 
     { 
      console.log('Reading'); 
      relayReadImage(obj.attr('href')); 
     } 

     function relayReadImage(link) 
     { 
      var dateObj = new Date(); 
      var newlink = link + "?t=" + dateObj.getTime(); 
      console.log(newlink); 
      appAPI.request.get(
       { 
       url: newlink, 

       onSuccess: function(response, additionalInfo) { 
        console.log(response); 
       }, 

        onFailure: function(httpCode) { 
        alert('GET:: Request failed. HTTP Code: ' + httpCode); 
       } 

       }); 
     } 
+0

Попробуйте установить свойство '.src' ** после **' .onload'. Он может быть кэширован. Другой вариант - добавить строку запроса в 'src', чтобы он разбивал любой кеш. Я бы предпочел использовать мое первое предложение – Ian

+0

Просто попробовал это, не работая. –

ответ

2

Я сотрудник Crossrider и был бы рад помочь вы. Если я правильно понимаю, вы пытаетесь использовать URL (href) объекта в dom (obj.attr ('href')), чтобы загрузить изображение в переменную в расширении. Вы можете достичь этого, используя наш кросс-браузер appAPI.request.get метода в extension.js файла следующим образом:

appAPI.ready(function($) { 
    appAPI.request.get({ 
     url: obj.attr('href'), 
     onSuccess: function(response) { 
      var imgData = response; 
      console.log(imgData); 
     } 
    }); 
}); 

Однако, если я неправильно понял ваш вопрос, пожалуйста, вы можете уточнить следующее:

  1. Что такое obj Объект есть?
  2. Что вы пытаетесь достичь и в каком контексте (в расширении или на странице)?
+0

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

+0

Вы можете просто добавить случайный параметр в URL. Для получения дополнительной информации см. Http://stackoverflow.com/questions/8749434/how-to-prevent-browser-image-caching. – Shlomo

+0

Кажется, это решение, но есть и другая проблема, мы не можем объединить любые строки в obj.attr ('href'). Браузер, похоже, игнорирует любые сделанные на нем операции, я не могу его зарегистрировать или распечатать с помощью 'alert()'. Во всяком случае, вокруг? –

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