Chrome扩展程序:下载

时间:2014-09-02 21:58:10

标签: javascript json google-chrome google-chrome-extension

我的最后一个也是最后一个问题。我似乎无法在扩展中使用.downloads函数。我收到了错误

无法阅读资产'下载'未定义的

注意我删除了一些代码,以便它适合这里 我的代码是

var contentInput = document.createElement("div")
contentInput.innerHTML = '<div style="position:relative; width: 145px;height: 30px;right: 0px;left: 14px;padding-top: 0px;top: 0px;"><div class="btn-primary btn-medium" style="position: absolute;left: 0px;" draggable="true">Download .OBJ</div><p style="position:relative; top: 33px; font-size:15px">Click to download the OBJ version of this asset.</p> </div>'
contentInput = contentInput.children[0].children[0]

localStorage.setItem("OBJURL", jsonObject.Url); //It's saved!
});

var objurl = localStorage.getItem("OBJURL");
SendRequest(objurl, function (objfinal) {

});
    chrome.downloads.download({url:objurl,filename:"wat23333.obj",conflictAction:"overwrite"})
    chrome.extension.sendRequest({
        action: "EditContent",
        type: assetType,
        name: assetName, 
        content: contentData
    })

}

清单文件

权限

"permissions": [
    "http://*.roblox.com/*",
    "http://*.rbxcdn.com/*",
    "downloads",
    "downloads.open"
],

3 个答案:

答案 0 :(得分:5)

Devlin的猜测几乎是正确的。

当这些条件中的任何一个成立时都会发生:

  1. 您没有权限
  2. 当您无法访问内容脚本时,您正在访问的API将从内容脚本中调用。
  3. 显然你有第二种情况。您需要将消息传递到后台页面并从那里处理操作。

答案 1 :(得分:2)

错误“无法读取未定义的属性'下载'”表示chrome对象上没有downloads属性。这通常表示无权访问API - 您是否在清单中请求“下载”权限?

答案 2 :(得分:0)

对我来说,Xan的解决方案也没有用。对我有用的是转到chrome://扩展并从chrome中删除扩展。之后,我重新添加了扩展名。然后它奏效了。