javascript
  • google-chrome-extension
  • 2014-09-02 697 views 0 likes 
    0

    我想送在Chrome浏览器HTTPGET请求,但我得到这个错误 资源必须在web_accessible_resources清单关键Chrome扩展的资源必须在web_accessible_resources清单项中列出

    这里上市是我的按钮代码

    contentInput.onclick = function(){ 
        var assetid = $('.thumbnail-span').attr("data-3d-url") 
        var baseurl = 'http://www.roblox.com' 
        var xhr = new XMLHttpRequest(); 
        xhr.open("GET", chrome.extension.getURL(baseurl + assetid), true); 
        var result = xhr.responseText; 
        xhr.send(); 
        console.log(result) 
         chrome.extension.sendRequest({ 
          action: "EditContent", 
          type: assetType, 
          name: assetName, 
          content: contentData 
         }) 
    

    和我的清单文件

    { 
    
         "name": "ROBLOX Object Downloader .obj", 
         "short_name": "OBJDownloader", 
         "description": "Allows you to quickly download assets from the browser as a .obj ", 
         "version": "1.0.0", 
         "icons": {"128":"icon.png"}, 
         "permissions": [ 
          "http://*.roblox.com/*", 
          "http://*.rbxcdn.com/*", 
          "downloads", 
          "downloads.open" 
         ], 
         "background": {"scripts":["background.js"]}, 
          "content_scripts": [ 
            { 
              "matches": ["http://*.roblox.com/*-item?id=*"], 
              "js": ["item.js","jquery.js"] 
            }, 
            { 
              "matches": ["http://*.roblox.com/*ser.aspx*"], 
              "js": ["user.js","jquery.js"] 
            }, 
            { 
              "matches": ["http://*.roblox.com/*atalog/*"], 
              "js": ["cataloginsert.js","jquery.js"] 
            } 
          ], 
         "manifest_version": 2 
        } 
    

    回答

    4

    chrome.extension.getURL功能用于从位于扩展的目录里自己的电脑上下载文件:

    string chrome.extension.getURL(string path):转换的延伸中的相对路径的安装目录为一个完全合格的URL。

    这意味着你的Ajax请求试图访问像

    chrome-extension://aaaaaabbbbbccccccdddddd/http://www.roblox.com/some-asset-id 
    

    一个URL为了通过chrome-extension://访问文件,你必须让他们的网页通过web_accessible_resource清单领域明确访问。

    但是,您可能只想获得网址http://www.roblox.com/some-asset-id。在情况下,getURL是完全不合适的。只是这样做:

    xhr.open("GET", baseurl + assetid, true); 
    

    你的代码中有一个附加问题,这是它不等待异步Ajax调用来完成。你应该等待load事件,然后阅读responseText:( '缩略图跨')。

    contentInput.onclick = function(){ 
        ... 
        var xhr = new XMLHttpRequest(); 
        xhr.open("GET", chrome.extension.getURL(baseurl + assetid), true); 
    
        xhr.addEventListener("load", function() { 
         var result = xhr.responseText; 
         console.log(result); 
         doSomethingElseWith(result); 
         // all uses of `result` must be inside this function 
        }); 
    
        xhr.send(); 
    
        ... 
    
    +0

    好吧,那为什么'VAR由assetid = $ ATTR( “数据-3D-URL”) VAR的BaseURL = 'http://www.roblox.com' var xhr = new XMLHttpRequest(); xhr.open(“GET”,baseurl + assetid,true); var result = xhr.responseText; xhr.send(); console.log(result)'不显示结果? IT只是显示XHR完成加载:GET和另一行是空白的 – user3851593 2014-09-02 20:03:05

    +0

    @ user3851593您不需要等待异步调用完成;我编辑了我的答案。 – apsillers 2014-09-02 20:09:47

    +0

    @ user3851593请不要尝试在评论中粘贴多行代码。它看起来_bad_。 – Xan 2014-09-02 20:11:36

    相关问题