javascript
  • google-chrome-extension
  • 2014-09-02 32 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

    相關問題