到目前为止我所拥有的是:
manifest.json
{
"name": "Append Test Text",
"description": "Add test123 to body",
"version": "1.0",
"permissions": [
"activeTab"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_title": "Append Test Text"
},
"manifest_version": 2,
"permissions": [
"https://*/*",
"http://*/*",
"tabs"
]
}background.js
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript({
code: 'var div=document.createElement("div"); document.body.appendChild(div); div.innerText="test123";'
});
});它所做的:在单击chrome扩展图标时,将<div>test123</div>添加到任何给定页面的<body></body>中。
我想达到的目标是:
与bit.ly Chrome扩展类似,我想在DOM中添加很多内容。单击扩展图标后,我希望添加一个覆盖元素( the <body></body> )和一个侧边栏,在那里我可以添加jQuery选项卡开关。

正如您所看到的,我只是在为StackOverflow创建这个问题时拍摄了这张照片。
问题:
发布于 2016-11-23 06:50:50
如果要在布局中添加简单的用户控件,则可以使用动态DOM元素。然而,如果您想要注入一个完整的布局,这可能是一个痛苦。jQuery的函数load可能会派上用场。
您可以将侧边栏的布局放在静态的HTML文件中,并将其与jQuery一起加载到给定的容器中。这样的事情应该可以做到,假设是一个id="myContainer"
jQuery
$('#myContainer').load('layout.html')要回答第一个问题,要向动态创建的元素提供特定ID,只需将其视为DOM元素并为其设置一个id。
JavaScript
var myElement = document.createElement('div');
myElement.id = 'myContainer';
myElement.className = 'kitten-background jumbo button';
// ...
// other properties you may need
// ...
document.body.appendChild(myElement);对于第二个问题,要检查元素是否存在,不妨再次使用jQuery。如果选择器匹配某项内容,则其length属性将大于零,因此这是插入之前检查该$('#myContainer').length == 0的干净验证。
祝你在努力达到的目标上好运,并有乐趣!
https://stackoverflow.com/questions/40757599
复制相似问题