0

好的,所以我試着做一個Chrome擴展。我在這方面有點小氣,這就是爲什麼我從一個教程網站的示例擴展開始,並添加了一些東西。我從一些我不記得的網站上下來,如果你真的想要歸因,我可以搜索它。代碼:createElement()不起作用

var req = new XMLHttpRequest(); 
req.open(
"GET", 
"http://api.flickr.com/services/rest/?" + 
    "method=flickr.photos.search&" + 
    "api_key=90485e931f687a9b9c2a66bf58a3861a&" + 
    "text=hello_world&" + 
    "safe_search=1&" + 
    "content_type=1&" + 
    "sort=relevance&" + 
    "per_page=24", 
true); 
req.onload = showPhotos; 
req.send(null); 

function showPhotos() { 
    var photos = req.responseXML.getElementsByTagName("photo"); 

    for (var i = 0, photo; photo = photos[i]; i++) { 
    var img = document.createElement("image"); 
    img.src = constructImageURL(photo); 
    document.getElementById("images").appendChild(img); 
    } 
} 

function constructImageURL(photo) { 
    return "http://farm" + photo.getAttribute("farm") + 
    ".static.flickr.com/" + photo.getAttribute("server") + 
    "/" + photo.getAttribute("id") + 
    "_" + photo.getAttribute("secret") + 
    "_s.jpg"; 
} 

所以無論如何,該擴展程序是它發送一個XMLHttpRequest到Flickr的API,讓一些圖像(以XML格式的img標籤)。然後使用for循環遍歷這些標記,併爲每個標記使用createElement()創建一個新的img元素,並使用constructImageURL()函數爲其提供src屬性並將其附加到彈出頁面。我想要做的是讓它能夠真正點擊這些圖像,並將其帶到圖像頁面。我試圖根據創建圖像元素的代碼創建一小段代碼,但是創建了錨(a)元素,我將其添加到for循環中。它看起來像這樣:

var a = document.createElement("link"); 
a.href = constructImageURL(photo); 
a.target = "_blank"; 
document.getElementById("images").appendChild(a); 

,然後我添加了一些代碼到IMG元素追加到錨定體,有效地使一個<a><img /></a>結構:

document.a.appendChild(img); 

但是,這是行不通的。有人可以幫忙嗎?

+0

哦,如果這有助於在所有,在manifest.json文件中有以下內容: '{ 「名」:「我的第一個擴展」, 「版本 「: 」1.0「, 」manifest_version「:2, 」描述「: 」我所做的第一個擴展名「, 」browser_action。「:{ \t 」default_icon「: 」的icon.png「, \t」 default_popup「: 」results.html「 }, 」權限「:[ 」http://api.flickr.com/「 ] }' – Bluefire

回答

1

那麼,你應該通過右鍵單擊瀏覽器的動作,然後單擊「檢查彈出」,看看什麼是錯的檢查開發者工具控制檯。

我想你可能想使用setAttribute,只是爲了確保。和用於鏈接的元件是不<a><link>,以及用於將圖像的元件是不<img><image>。另外,你不想要document.a.appendChild,你想將圖像追加到當前的變量。因此,它應該是這樣的:

function showPhotos() { 
    var photos = req.responseXML.getElementsByTagName("photo"); 
    var a = document.createElement("a"); 
    a.setAttribute("href",constructImageURL(photo)); 
    a.setAttribute("target","_blank"); 

    var img = document.createElement("img"); 
    img.setAttribute("src",constructImageURL(photo)); 

    a.appendChild(img); 
    document.getElementById("images").appendChild(a); 
} 
+0

哦,我有點困惑與有點太 - 程序來像(在的createElement括號它「形象」,和它的工作,所以我想我需要把「鏈接」中的主播元素:O感謝您的幫助! – Bluefire

+0

另外,你可以幫助我得到用戶輸入在它所說的「text = hello_world&」的位上工作,以便用戶可以輸入要搜索的內容嗎?我試圖用一個onsubmit事件來做一個表單,但是它失敗得很厲害......你能幫忙嗎? – Bluefire

+0

那麼,你就必須換行'XMLHttpRequest'對象的整個創作的功能,並傳遞一個參數,說'text',然後寫'「文本=」 +文字+「&」'以插入字符串。然後你必須調用這個函數,比如說,響應用戶按下一個按鈕......嗯...... – gengkev