Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получение тела изображения FireFox addon (https://javascript.ru/forum/misc/43866-poluchenie-tela-izobrazheniya-firefox-addon.html)

VanillaNinja 24.12.2013 13:58

Получение тела изображения FireFox addon
 
Ребята, выручайте!
Пишу аддон для Firefox и у меня возникла следующая нетривиальная задача:
После загрузки страницы, необходимо получить изображение(по ссылке, по которой оно было получено оно больше недоступно), при этом необходимо получить не какой-то адрес, а непосредственно тело изображения, буду признателен, если расскажите, как это лучше сделать.

Спасибо.

Яростный Меч 24.12.2013 14:06

т.е. на странице есть картинка с урлом, который более не работает, и тебе надо как-то получить содержимое этой картинки?
попробуй скопировать ее на канву, а там дальше все просто

VanillaNinja 24.12.2013 14:21

А чем ее подцепить, чтобы скопировать в канвас?
getElementsByTagName()?

Яростный Меч 24.12.2013 14:27

Цитата:

Сообщение от VanillaNinja
getElementsByTagName()?

как вариант.

а вообще, посмотреть firebug-ом, как она расположена в документе на странице, и в зависимости от этого выбрать способ.
к твоим услугам механизм селекторов:
document.querySelectorAll
document.querySelector

document - это документ страницы с картинкой

VanillaNinja 24.12.2013 15:15

var elm = document.getElementById("my_image");
var canvas = document.createElement("canvas");
                    canvas.width = elm.width;
                    canvas.height = elm.height;
                     var ctx = canvas.getContext("2d");
                    ctx.drawImage(elm, 0, 0);
                    var dataURL = canvas.toDataURL("image/png");
                    img_src1 = dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
                    alert(img_src1);
}


Вот почему-то эта контсрукция работать не хочет. Я что-то делаю не так?

Vlasenko Fedor 24.12.2013 15:27

var elm = document.getElementById("my_image");

цикл и код выше лишний

VanillaNinja 24.12.2013 15:32

Ну ведь это скорее эстетическая проблема а не функциональная. Хотя, спасибо, переписал.
Но тем не менее не работает эта красота, выполняется до строчки
var ctx = canvas.getContext("2d");
а дальше - не работает (

Яростный Меч 24.12.2013 15:42

VanillaNinja,

видимо, канву надо куда-нибудь добавить, в документ например.

VanillaNinja 24.12.2013 15:54

Яростный Меч,
var canvas = document.createElement("canvas");

разве эта cтрока не делает этого?

Яростный Меч 24.12.2013 16:05

Цитата:

Сообщение от VanillaNinja
разве эта cтрока не делает этого?

нет. она только создает элемент.


Часовой пояс GMT +3, время: 19:56.