Javascript 加载活动选项卡的页面源的Chrome扩展
我希望你能帮助我 我试图在Chrome中创建一个扩展,将活动选项卡的源加载到一个变量中 到目前为止,我已经: manifest.jsonJavascript 加载活动选项卡的页面源的Chrome扩展,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,我希望你能帮助我 我试图在Chrome中创建一个扩展,将活动选项卡的源加载到一个变量中 到目前为止,我已经: manifest.json { "name": "My Extension", "manifest_version": 2, "version": "0.1", "description": "Does some simple stuff", "browser_action": { "default_icon": "logo.png" }, "background": {
{
"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);
});
<>但是加载空白页的页源。要获取活动页面的源,我需要做什么
我做了一些阅读,我想我需要使用一些听力功能的内容脚本,我一直在搜索,但所有的答案似乎对我来说非常复杂。你们谁能给我举个简单的例子
非常感谢您的反馈
问候
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);
})
});
当我按下分机按钮时,我得到了类似的结果
<html></html>
<body><script src="main.js"></script>
</body>
上面版本的main.js提供与之前版本完全相同的输出,无论我激活了哪个页面。后台脚本与当前页面隔离,因为它们被设计为持久性的,无论页面内容如何。具体来说,您需要使用API。一旦有了当前选项卡,就可以将代码注入窗口。这就是你上面的代码片段
您需要将“选项卡”添加到清单文件中的权限中。如前所述,您需要在活动选项卡的上下文中运行代码。一种方法是使用
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);"});
}
);
在Chrome47中,您需要将“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"]}
}
我尝试了你的建议,也尝试了其他一些我发现的东西,最后一些东西现在起作用了,但仍然没有如预期的那样。更多想法?相关答案:。重复使用代码很容易获得当前选项卡的源代码(顺便说一句,不要忘了添加)。重复:谢谢你的代码,但我有一个问题。如何在此代码中定义ps1?我尝试了
code:“var ps1=document…”
但是警报返回未定义的@Matt代码按原样工作,您不必添加任何声明。回调函数将接收执行代码计算的最后一个表达式作为参数。您在下面发布的答案的问题是,您在背景脚本的上下文中没有可用的值。
{
"name": "Rafi extension",
"manifest_version": 2,
"version": "7",
"description": "Open something",
"browser_action": {
"default_icon": "logo.png"
},
"permissions": [
"activeTab"
],
"background": {
"scripts": ["main.js"]}
}