2014-02-27 49 views
0

background.js页面内容时,标签在Chrome扩展名改成

var htmlcontent = null; 

chrome.tabs.onUpdated.addListener(function() { 
onWindowLoad(); 
alert(htmlcontent); 
}); 

chrome.tabs.onHighlighted.addListener(function(){ 
onWindowLoad(); 
alert(htmlcontent); 
}); 

function onWindowLoad() { 
chrome.tabs.executeScript(null, { 
file: "getPagesSource.js" 
}, function() { 
if (chrome.extension.lastError) { 
htmlcontent = 'There was an error injecting script : \n' + chrome.extension.lastError.message; 
} 
}); 
} 

chrome.extension.onMessage.addListener(function(request, sender) { 
if (request.action == "getSource") { 
htmlcontent = request.source; 
} 
}); 

getPagesSource.js

function DOMtoString(document_root) { 
return document.body.innerText ; 
} 

chrome.extension.sendMessage({ 
action: "getSource", 
source: DOMtoString(document) 
}); 

我开发一个Chrome扩展。我能够在重新加载当前窗口的正文内容,但是当我更改选项卡时,我无法获取内容。前一个标签的内容正在保存。我使用了错误的API吗?或者当我在Chrome中更改标签时,如何触发onUpdate功能?

回答

1

终于找到了。

我打印的chrome.tabs.onHighlighted.addListener)中的HTML内容(功能(在那一瞬间,我仍然不会已经得到了价值。

的htmlcontent值将被设置为只在该chrome.extension.onMessage.addListener(函数()。

所以,如果你尝试和打印htmlcontent,你仍然会具有一个选项卡的内容。

所以流量,

chrome.tabs.onUpdated.addListener(function() { 
onWindowLoad(); 
}); 

function onWindowLoad() { 
chrome.tabs.executeScript(null, { 
file: "getPagesSource.js" 
}, function() { 
if (chrome.extension.lastError) { 
htmlcontent = 'There was an error injecting script : \n' +  chrome.extension.lastError.message; 
} 
}); 
} 

chrome.extension.onMessage.addListener(function(request, sender) { 
if (request.action == "getSource") { 
htmlcontent = request.source; 
//call whatever function from here on so that htmlcontent will have the selected tab's content. 
} 
}); 
0

通过“当我更改标签”是否意味着更改哪个标签是活动的?

确保您了解的标签API中的事件和回调的参数: http://developer.chrome.com/extensions/tabs

我不能确定你想要做什么,但是当你改变tabs.onActivated事件被触发哪个标签是活动的。也许你想添加一个监听器,而不是tabs.onHighlighted。

另外,chrome.tabs.executeScript的第一个参数应该是要执行脚本的标签的标签ID(如果为null,则在活动标签中执行)。标签事件的回调具有附加参数,例如,该标签所在的窗口,还是该标签仍在加载或完成。

+0

“更改标签”我的意思是,切换之前加载的标签。我需要使用哪些chrome API,以便chomre.tabs.executeScript可以在“CHANGED TAB”上执行?为了提供更清晰的视图,假设我在Chrome浏览器中加载了标签1,2和3。目前我在标签1中。当我切换到标签2时,我需要捕捉到内联文本。但在我的代码中,当我切换到标签2时,我得到了标签1的innerText。我如何获取已更改标签的innerText而不是以前标签的文本? – nikhil

相关问题