Google chrome extension 在两个不同的页面上执行浏览器操作

Google chrome extension 在两个不同的页面上执行浏览器操作,google-chrome-extension,google-chrome-devtools,google-chrome-app,Google Chrome Extension,Google Chrome Devtools,Google Chrome App,我随身携带以下文件 manifest.json { "name": "Get Response URL", "version": "1.0", "manifest_version": 2, "name": "Test" , "browser_action": { "icon":"icon.png" }, "background": { "persiste

我随身携带以下文件

manifest.json

{
        "name": "Get Response URL",
        "version": "1.0",
        "manifest_version": 2,
        "name": "Test" ,
        "browser_action": {
        "icon":"icon.png"
        },
        "background": {
        "persistent": false,
        "scripts": ["background.js"]
         },
        "browser_action": {
        "default_icon": "icon.png"
      },
        "permissions":["https://myblog.com/*"] ,//Put All your URL here
        "manifest_version": 2
 }
background.js

chrome.browserAction.onClicked.addListener(函数(选项卡){//在用户单击图标时激发
如果(tab.url.indexOf(“https://myblog.com/page1.html“”==0){//检查用户单击的位置是否与我们的URL列表匹配
chrome.tabs.executeScript(tab.id{
“文件”:“page2.js”
},函数(){//执行您的代码
console.log(“脚本已执行”);//完成时的通知
});
}
else if(tab.url.indexOf(“https://myblog.com/page2.html“”==0){//检查用户单击的位置是否与我们的URL列表匹配
chrome.tabs.executeScript(tab.id{
“文件”:“page1.js”
},函数(){//执行您的代码
console.log(“脚本已执行”);//完成时的通知
});
}
});
Page1.html


第1页
page2.html


第2页
和两个JavaScript文件page1.jspage2

page1.js

var-button=document.getElementById(“myBtn”);
按钮。单击();
Page2.js

document.getElementById(“myText”).value=“文本框”;
我开发了一个Chrome扩展。在第一页上,当我单击Chrome扩展图标时,功能按照页面的JavaScript文件(page1.js)运行良好

在page1.js的帮助下,我在页面上所做的就是点击一个按钮,移动到第二个页面。现在我希望page2.js应该按照脚本(page2.js)在页面上编写,但它不工作

当我单击第1页上的扩展图标,然后再次单击第2页上的扩展图标时,脚本工作正常

但我希望扩展图标应该在第1页上单击,而不是重复

编辑了问题

{
        "name": "Get Response URL",
        "version": "1.0",
        "manifest_version": 2,
        "name": "Test" ,
        "browser_action": {
        "icon":"icon.png"
        },
        "background": {
        "persistent": false,
        "scripts": ["background.js"]
         },
        "browser_action": {
        "default_icon": "icon.png"
      },
        "permissions":["https://myblog.com/*"] ,//Put All your URL here
        "manifest_version": 2
 }
  • 添加了page1.html和page2.html
  • page1.js和page2.js
有没有可能这样做。
如果是,我在哪里出错?

以下是您需要做的。 您的代码块
chrome.browserAction.onClicked.addListener(函数(选项卡){
使JS函数仅在单击图标时执行。这就是为什么您的第1页可以工作,而第2页不能工作的原因

您想在打开page2.html后立即运行page2.js,对吗?因此请更改page2.html的编码。在page2.html本身中添加以下代码

document.addEventListener(“DOMContentLoaded”,函数(事件){
//工作
});

这将做的是,一旦Page2.html被加载,它将执行Javascript。尽管它在大多数浏览器中都能工作,但对于IE8和更低版本它不会

如果您也需要IE 8及以下版本,请尝试使用以下代码:

<script type="text/JavaScript">
function funtionToBeCalled(){
// code that will be exected after dom ready
}

window.onload=funtionToBeCalled;
</script>

函数FunctionToBeCalled(){
//dom就绪后将执行的代码
}
window.onload=Functiontobecalled;

So
page1.js
单击按钮转到page2.html?按照编码方式,您的扩展需要在第2页上单击浏览器操作才能执行
page2.js
。如果这不是您想要的,您可能需要背景脚本来监听导航(以及您是否已在第1页上单击该图标)。顺便说一句,您可能应该使用页面操作而不是浏览器操作。您需要单击第1页上的任何内容,还是只需要导航到第2页?@Teepeemm正是您所想的方式,因为扩展需要多页面导航。使用页面操作实现相同操作是否正确?如果如果你有任何想法,我会立即通知你。@Xan是的,我在第1页上有一个按钮(我已经编辑了问题),当点击扩展图标时,浏览器将导航到第2页,其中有一个文本框,在page2.js的帮助下,我想在其中输入一些文本。