JavaScript Загрузить изображение из URL-адреса в расширении браузера Crossrider

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

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

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

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');
};

ИЗМЕНИТЬ

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

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);
                }

                });
        }

person Khaled Nassar    schedule 06.05.2013    source источник
comment
Попробуйте установить свойство .src после свойства .onload. Он может быть закеширован. Другой вариант — добавить строку запроса к src, чтобы она разбивала любой кеш. Я бы предпочел использовать мое первое предложение   -  person Ian    schedule 06.05.2013
comment
Только что попробовал, не работает.   -  person Khaled Nassar    schedule 06.05.2013


Ответы (1)


Я сотрудник 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. Чего вы пытаетесь достичь и в каком контексте (в расширении или на странице)?
person Shlomo    schedule 06.05.2013
comment
Спасибо за ответ. Чтобы сначала ответить на ваши вопросы, obj — это объект изображения, который пользователь перетаскивает, и мы хотели бы выполнить некоторую обработку изображения, расширение выполнит наши требования. Так или иначе, после некоторых тестов мы выяснили, что загрузка изображения действительно работала, но браузер загружал его из кеша. Есть ли что-нибудь вокруг этого? - person Khaled Nassar; 07.05.2013
comment
Вы можете просто добавить случайный параметр к URL. Для получения дополнительной информации см. stackoverflow.com/questions. /8749434/. - person Shlomo; 07.05.2013
comment
Кажется, это решение, но есть еще одна проблема: мы не можем объединить строки в obj.attr('href'). Браузер, похоже, игнорирует любые операции, выполняемые с ним, я не могу его зарегистрировать или распечатать, используя alert(). Есть ли что-нибудь вокруг этого? - person Khaled Nassar; 07.05.2013
comment
Можете ли вы предоставить код? Вы пытались присвоить переменной, а затем объединить переменную? Кроме того, вы пробовали код, который я предоставил ;-) - person Shlomo; 08.05.2013
comment
Отредактировал вопрос и добавил код. Да, я пытался соединить переменную с другой, а также с вашим кодом. Просто очень необычная проблема... - person Khaled Nassar; 10.05.2013
comment
Могу я пояснить, почему вы пытаетесь получить атрибут href тега img? По определению атрибут не существует в теге img, поэтому ваш код не работает. Попробуйте использовать obj.attr('src'). - person Shlomo; 12.05.2013
comment
Я должен был объяснить больше, браузер на самом деле перетаскивает не объект изображения, а объект ссылки HTML, который по какой-то причине оборачивает его, а атрибут href такой же, как src< /b> атрибут нужного изображения. - person Khaled Nassar; 12.05.2013
comment
Я сотрудник Crossrider и буду рад помочь вам отладить расширение. Тем не менее, я не думаю, что StackOverflow является подходящим форумом, и поэтому я приглашаю вас написать по электронной почте в наш канал поддержки ([email protected]) со ссылкой на эту тему и идентификатором расширения, и я буду рад помочь вам в дальнейшем. - person Shlomo; 12.05.2013