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