我为Chrome写了一个扩展程序。我希望当我点击我的扩展程序中的按钮时,值'abc'将被设置为活动页面上的活动输入。 这是我的代码: 1)manifest.json
{
"name": "Test",
"short_name": "Test",
"manifest_version": 2,
"version":"2.0.0.0",
"browser_action": {
"default_popup": "index.html",
"default_title": "Load EmojiSelector"
},
"background":{
"scripts":["background.js"],
"persistent": false
},
"content_scripts":[
{
"matches":["http://*/*", "https://*/*"],
"js":["content.js"]
}
]
,
"permissions": [
"activeTab"
]
}
2)index.html
<!DOCTYPE html>
<html>
<head>
<title>Test SendMessage</title>
<script src='content.js'></script>
</head>
<body>
<input id='btsend' type='button' value='Send abc to input'>
</body>
</html>
3)background.js
chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){
var act = chrome.tabs.getSelected(null, function(tab){
//How to set the value of response to active input in page????
});
});
4)content.js
onload=function(e){
var btsend = document.getElementById('btsend');
btsend.onclick = function(){
chrome.runtime.sendMessage('abc');
}
}
如何使用DOM为活动页面中的活动输入设置值。
答案 0 :(得分:1)
请务必阅读extension architecture:您的弹出式脚本应与内容脚本不同。实际上,您根本不需要无条件注入的内容脚本,请使用官方示例扩展chrome.tabs.executeScript中显示的Page Redder。
注意:无法在默认的新标签页上插入文字,因为Chrome会将键盘输入重定向到其内置的多功能框(地址栏),该按钮只接受可信(真实)按键,而不是从JavaScript发送的按键。< / p>
正确的弹出式脚本应将click
侦听器附加到元素
的manifest.json:
{
"name": "Test",
"manifest_version": 2,
"version":"2.0.0.0",
"browser_action": {
"default_popup": "popup.html",
"default_title": "Load EmojiSelector"
},
"permissions": [
"activeTab"
]
}
popup.html:
<input id='btsend' type='button' value='Send abc to input'>
<script src='popup.js'></script>
popup.js:
document.getElementById('btsend').onclick = () => {
chrome.tabs.executeScript({file: 'content.js'});
};
content.js:
document.execCommand('insertText', false, 'abc');