2013-05-06 81 views
1

我目前正在使用Crossrider编写扩展程序,并且需要直接使用URL加载图像以对其进行一些图像处理。然而,onload事件似乎并没有被解雇。JavaScript从Crossrider浏览器扩展中的URL加载图像

我做错了什么,或者甚至有可能在浏览器扩展中做到这一点?

下面是相关的代码:

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

       }); 
     } 
+0

尝试在'.onload'后面设置'.src'属性**。它可能被缓存。另一种选择是将查询字符串添加到“src”中,以便它打破任何缓存。我宁愿使用我的第一个建议 – Ian 2013-05-06 17:01:41

+0

刚刚尝试过,没有工作。 – 2013-05-06 18:04:46

回答

2

我是Crossrider员工,并乐意帮助您。如果我理解正确,那么您试图使用页面dom中的对象的URL(href)(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是用户拖动的图像对象,我们想对其执行一些图像处理,扩展程序将执行我们的出价。无论如何,经过一些测试后,我们发现图像加载实际上工作,但浏览器会从缓存中获取它。有没有办法解决? – 2013-05-06 22:25:29

+0

您可以简单地向该URL添加一个随机参数。有关更多信息,请参阅http://stackoverflow.com/questions/8749434/how-to-prevent-browser-image-caching。 – Shlomo 2013-05-07 06:51:13

+0

似乎是解决方案,但还有另一个问题,我们不能将任何字符串连接到obj.attr('href')。浏览器似乎忽略了对它所做的任何操作,我无法使用'alert()'将其记录或打印出来。有没有办法解决? – 2013-05-07 15:32:19

相关问题