用于加载活动标签页面来源的Chrome扩展程序

我希望你能帮助我。

我正在尝试在Chrome中创建一个扩展程序,它会将活动标签的来源加载到变量中。

到目前为止我有:

的manifest.json

{ "name": "My Extension", "manifest_version": 2, "version": "0.1", "description": "Does some simple stuff", "browser_action": { "default_icon": "logo.png" }, "background": { "scripts": ["main.js"]}} 

main.js

 chrome.browserAction.onClicked.addListener( function(tab) { var ps1 = document.getElementsByTagName('html')[0].innerHTML; window.alert(ps1); }); 

但是会加载空白页面的页面源。 我需要做什么才能获得活动页面的来源。

我做了一些阅读,我认为我需要使用内容脚本,一些听力function,我一直在搜索,但所有答案在我看来都非常复杂。 你们中的任何人都会如此友好地给我一些简单的例子吗?

非常感谢您的反馈!

问候


AdrianCooney回答后的更新:

我改变了我的清单

  "permissions": [ "tabs" ] 

然后在main.js中我做了

 chrome.browserAction.onClicked.addListener(function(activeTab) { chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) { var ps1=document.getElementsByTagName('html')[0].innerHTML; window.alert(ps1); }) }); 

当我按下扩展按钮时,我会得到类似的东西

    

……无论我有什么标签,我都活跃。

另一个尝试使用chrome.tabs.getCurrent

 chrome.browserAction.onClicked.addListener(function(activeTab) { chrome.tabs.getCurrent( function (tabs) { var ps1=document.getElementsByTagName('html')[0].innerHTML; window.alert(ps1); }) }); 

无论我有什么页面活动,上面版本的main.js都会提供与之前版本完全相同的输出。

后台脚本与当前页面是隔离的,因为它们被设计为持久,无论页面的内容如何。 您需要使用chrome.tabs API,特别是chrome.tabs.getCurrent 。 获得当前选项卡后,可以将代码注入窗口。 这就是你上面的代码片段。

您需要在清单文件中为您的权限添加“tab”。

正如所指出的,您需要在活动选项卡的上下文中运行代码。 一种方法是使用chrome.tabs.executeScript

 chrome.browserAction.onClicked.addListener( function() { chrome.tabs.executeScript( { code: "document.getElementsByTagName('html')[0].innerHTML;" }, function (ps1) { window.alert(ps1); } ); }); 

main.js下的这段代码有效!!! 谢谢你们的提示,他们给了我很多时间!

 chrome.browserAction.onClicked.addListener( function(tab) { chrome.tabs.executeScript( null,{ code:"var ps1 = document.getElementsByTagName('html')[0].innerHTML; window.alert(ps1);"}); } ); 

在Chrome 47中,您需要将“activeTab”添加到权限,否则它不起作用。 使用“标签”它不起作用。

manifest.json的:

 { "name": "Rafi extension", "manifest_version": 2, "version": "7", "description": "Open something", "browser_action": { "default_icon": "logo.png" }, "permissions": [ "activeTab" ], "background": { "scripts": ["main.js"]} }