1

我目前正在使用 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);
                }

                });
        }
4

1 回答 1

2

我是 Crossrider 的员工,很乐意为您提供帮助。如果我理解正确,您正在尝试使用页面 dom ( obj.attr('href') ) 中对象的 URL (href) 将图像加载到扩展程序中的变量中。您可以在您的extension.js文件中使用我们的跨浏览器appAPI.request.get方法来实现此目的,如下所示:

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

但是,如果我误解了您的问题,请您澄清以下内容:

  1. obj对象是什么?
  2. 您要实现什么目标,以及在哪种情况下(在扩展程序中或页面上)?
于 2013-05-06T19:55:04.743 回答