输入类型=可在Google Chrome扩展程序中使用的文件替代方案

时间:2011-12-21 05:21:19

标签: javascript google-chrome-extension

我正在开发一个Google Chrome扩展程序,用户可以手动上传文件。我在popup.html中创建了一个文件类型输入,并尝试读取该文件。但这不起作用,因为这是谷歌Chrome中的错误..

如果有任何其他工作,请有人建议我。我found这个,但我无法继续,因为我无法理解他们的术语。

由于

1 个答案:

答案 0 :(得分:1)

我找不到任何解决方法来解决这个问题并以另一种方式解决它。我在发布我使用过的代码

首先在Popup页面中:

 chrome.tabs.getSelected(null, function(tab) {
      chrome.tabs.sendRequest(tab.id, {
                'action': 'inject'
      });
 }); 

在内容脚本中:

 chrome.extension.onRequest.addListener(function ListeningMethod(request, sender,callback)
 {
switch(request.action)
{
    case "inject":
            if($('body').find('#TesterItems').size() < 1)
            {
                $('body').prepend("<div id='TesterItems'><center><input type='file' id='xfilex'></center></div>");
            }
            else
            {
                $('#TesterItems').html("<center><input type='file' id='xfilex'></center>");
                $('#TesterItems').slideToggle('slow');
            }
    break;

 }
});
$('#xfilex').live('change',function()
{
var file = document.getElementById('xfilex').files[0];
if(file)
{
    var reader;
    reader = new FileReader();
    reader.readAsText(file, "UTF-8");
    reader.onload = loaded;
}
});

function loaded(evt)
{
var fileString = evt.target.result;
var str = fileString;
if(str.length > 0 )
{
    chrome.extension.sendRequest({method: "passThisXML", key: str}, function(response) {
        $('#TesterItems').html('<center><span style="padding:3px">Successfully loaded XML.</span></center>');
        $('#TesterItems').slideToggle('slow');
        var Dat = response.data;
    });
}
 }