我已經寫了谷歌瀏覽器的擴展,我有一個錯誤,我需要一個幫助解決。 我所做的是使用文本選擇或在flickr上輸入文字搜索照片,然後創建結果選項卡。 擴展工作大部分時間。但有時會創建一個沒有結果的空白標籤,當我重複相同的搜索時,它會顯示結果。我認爲這與HTML文件消息傳遞可能有關。我不得不說,我總是收到來自flickr的結果,以便flickr的請求/響應可以正常工作。有時候,當我使用其他選項卡或在等待結果時在其他選項卡上執行某些操作時會發生錯誤。你能幫我弄清楚故障在哪裏嗎?鉻擴展連接問題
背景文件:
function searchSelection(info,tab){
var updated;
if(info.selectionText==null){
var value = prompt("Search Flickr", "Type in the value to search");
updated=makeNewString(value);
}
else{
updated=makeNewString(info.selectionText);
}
var resultHtml;
var xhReq = new XMLHttpRequest();
xhReq.open(
"GET",
"http://api.flickr.com/services/rest/?method=flickr.photos.search&text="+updated+
"&api_key=a0a60c4e0ed00af8d70800b0987cae70&content_type=7&sort=relevance&per_page=500",
true);
xhReq.onreadystatechange = function() {
if (xhReq.readyState == 4) {
if (xhReq.status == 200) {
chrome.tabs.executeScript(tab.id, {code:"document.body.style.cursor='auto';"});
var photos = xhReq.responseXML.getElementsByTagName("photo");
if(photos.length==0){
alert("No results found for this selection");
chrome.tabs.executeScript(tab.id, {code:"document.body.style.cursor='auto';"});
return;
}
var myJSPhotos=[];
for(var i=0; i<photos.length; i++){
var data={"id":photos[i].getAttribute("id"),"owner":photos[i].getAttribute("owner"),
"secret":photos[i].getAttribute("secret"),"server":photos[i].getAttribute("server"),
"farm":photos[i].getAttribute("farm"),"title":photos[i].getAttribute("title")};
myJSPhotos[i]=data;
}
chrome.tabs.create({"url":"results.html"},function(thistab){
var port= chrome.tabs.connect(thistab.id);
port.postMessage({photos:myJSPhotos});
});
}
};
};
xhReq.send(null);
chrome.tabs.executeScript(tab.id, {code:"document.body.style.cursor='wait';"});
}
var context="selection";
var id = chrome.contextMenus.create({"title": "search Flickr", "contexts":[context,'page'],"onclick":searchSelection});
結果HTML:只在js文件的引用res.js
res.js:
chrome.extension.onConnect.addListener(function(port) {
port.onMessage.addListener(function(msg) {
//*****//
var photos=msg.photos;
createPage(photos);
});
});
我不得不提到的是,當該標籤是空的,如果我把//*****//
部分警報,它不會 火災。 但是當我在標籤創建回調函數部分打印出photos.length
它打印出正確的結果。
請這部分提供代碼:'//這是我發送請求到flickr的地方,並將結果編輯成JSon' – serg 2011-03-03 16:43:43
更新了部分 – mary 2011-03-04 11:31:01