我一直在学习创建chrome扩展程序。我已经尝试过hello world示例,它运行正常。现在我一直在尝试添加自定义代码,并根据我的要求对hello world代码进行一些更改。
我想要创建的是当用户点击地址栏中的图标时,它应该在地址栏下面打开 popup.html ,如图所示。屏幕截图来自名为 raindrop.io
的扩展程序他们正在进行chrome扩展。当我点击图标时,它会在现有网页顶部和地址栏下方打开右侧抽屉,以显示我保存的所有书签。我想达到同样的效果,但我不知道从哪里开始。我听说有一些实验性的侧窗格,但谷歌删除了它。
修改
我已经采纳了这些建议并尝试实施。现在我被困在两个地方 -
这是我的代码 -
:一种。 Chrome扩展程序中的侧窗口界面
的manifest.json
{
"manifest_version": 2,
"name": "Hello World",
"description": "This extension to test html injection",
"version": "1.0",
"content_scripts": [{
"run_at": "document_end",
"matches": [
"https://*/*",
"http://*/*"
],
"js": ["js/jquery-1.11.3.js", "js/content-script.js"],
"css": ["css/custom.css"]
}],
"browser_action": {
"default_icon": "icon.png"
},
"permissions": [
"activeTab",
"https://ajax.googleapis.com/"
]
}
内容Script.js
var iframe = document.createElement('iframe');
iframe.style.background = "green";
iframe.style.height = "100%";
iframe.style.width = "360px";
iframe.style.position = "fixed";
iframe.style.top = "0px";
iframe.style.right = "0px";
iframe.style.zIndex = "9000000000000000000";
iframe.frameBorder = "none";
document.body.appendChild(iframe);
B中。注意采取应用扩展
popup.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>SideNotes</title>
<link rel="stylesheet" href="css/style.css">
<script src="popup.js"></script>
</head>
<body>
<div class="container">
<div id="toolbar">
<p id="title">S I D E N O T E S </p>
<img id="logo" src="image/icon.png" alt="">
</div>
<div id="all-notes">
<ul id="todo-items"></ul>
</div>
<div id="take-note">
<form id="new-todo-form" method="POST" action="#">
<textarea id="new-todo"></textarea>
<input type="image" src="image/done.svg" id="submitButton">
</form>
</div>
</div>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/custom.js"></script>
<script type="text/javascript" src="js/db.js"></script>
<script type="text/javascript" src="js/app.js"></script>
</body>
</html>
答案 0 :(得分:12)
Chrome扩展程序API中没有右侧面板。
您可以采用与示例扩展程序相同的方式执行此操作:
background.js
收听消息
background.js
(如果您需要在系统页面上正确扩展工作)chrome.tabs.executeScript
将您的菜单div注入页面/注入监听器,这将打开您的菜单。background.js
听取浏览器图标的点击,并通知您的内容脚本有关点击次数。popup.html
。<强> manifest.js 强>
....
"browser_action": {
},
"background": {
"scripts":["background.js"]
},
...
<强> background.js 强>
chrome.browserAction.onClicked.addListener(function(){
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
chrome.tabs.sendMessage(tabs[0].id,"toggle");
})
});
zero width
开启display:none;
样式)创建一个不可见的iframe。我使用zero width
,因为您可能希望通过jquery为菜单显示设置动画,例如扩展名。background.js
脚本发送的消息。内容-的script.js 强>
chrome.runtime.onMessage.addListener(function(msg, sender){
if(msg == "toggle"){
toggle();
}
})
var iframe = document.createElement('iframe');
iframe.style.background = "green";
iframe.style.height = "100%";
iframe.style.width = "0px";
iframe.style.position = "fixed";
iframe.style.top = "0px";
iframe.style.right = "0px";
iframe.style.zIndex = "9000000000000000000";
iframe.frameBorder = "none";
iframe.src = chrome.extension.getURL("popup.html")
document.body.appendChild(iframe);
function toggle(){
if(iframe.style.width == "0px"){
iframe.style.width="400px";
}
else{
iframe.style.width="0px";
}
}
<强>的manifest.json 强>
"web_accessible_resources": ["popup.html"]