2016-05-12 46 views
0

我在學習JS &不斷遇到如何將文檔放在一起做這個或那個的問題。例如Greasemonkey被記錄下來,但是你必須知道很多其他的內容,甚至沒有提到很好地使用了greasepot wiki。GM_xmlhttprequest問題和教程?

我一直在嘗試以下的各種組合,例如,我永遠只能得到來自GM_xmhttprequest功能「不確定」,儘管:

var url = "https://en.wikipedia.org/wiki/CURL?action=render"; 

var fetchContent = console.log(function getContent(url) { 
    if (url.length < 0) { 
    return 0 ; 
    } 
GM_xmlhttpRequest({ 
    method: "GET", 
    url: url, 
    headers: { 
    "User-Agent": "Mozilla/5.0", // If not specified, navigator.userAgent will be used. 
    //"Accept": "text/xml"   // If not specified, browser defaults will be used. 
    }, 
    onload: function(response) { 
    //var responseXML = null; 
    alert(response.responseText); 
    // Inject responseXML into existing Object (only appropriate for XML content). 

    /* 
    if (!response.responseXML) { 
     responseXML = new DOMParser() 
     .parseFromString(response.responseText, "text/xml"); 
    } 

    GM_log([ 
     response.status, 
     response.statusText, 
     response.readyState, 
     response.responseHeaders, 
     response.responseText, 
     response.finalUrl, 
     responseXML 
    ].join("\n")); 

    */ 
    } 
}); 
    }) 

但我不知道我正確使用它:

需要定義'onload'中的內容? 需要先創建一個var? (例如var responseHoldingObject = new Object();?)? 等

任何建議,以獲取頁面提取我期待去欣賞。目標是獲取內容並最終將其附加到另一個頁面中(例如,在textarea或div內)。

回答

0

用GreaseMonkey學習JS可能有點高級。

fetchContent將被分配返回值console.log,這是undefined,因爲console.log不會返回一個值。而你正在記錄的是功能getContent本身。 getContent永遠不會被評估。

最後,您永遠無法從異步函數獲得響應,以便在回調之外可靠地使用(除了使用輪詢)。基本上它應該是這樣的(未經測試):

GM_xmlhttpRequest({ 
    method: "GET", 
    url: url, 
    headers: { 
    "User-Agent": "Mozilla/5.0", // If not specified, navigator.userAgent will be used. 
    //"Accept": "text/xml"   // If not specified, browser defaults will be used. 
    }, 
    onload: function(response) { 

    /* use response here */ 

    } 
}); 

/* can't use response here */ 

沒有fetchContent = console.log的事情。