我一直在学习创建一个Chrome扩展。我尝试了Hello World的例子,它工作得很好。现在我一直在尝试添加自定义代码,并根据我的要求对hello world代码进行一些更改。
我尝试创建的是当用户点击地址栏中的图标时,它应该打开地址栏下方的popup.html****,如图所示。截图来自raindrop.io**扩展
他们正在做的是在Chrome扩展。当我点击图标时,它会打开位于现有网页顶部和地址栏下方的右侧抽屉,显示我所有保存的书签。我想达到同样的效果,但我不知道从哪里开始。我听说有一些实验性的侧窗格,但谷歌已经删除了它。
编辑
我接受了这些建议,并试图实施。现在我被困在两个地方-
1.点击地址栏图标时如何打开窗口。现在它只是自己自动打开。我希望它打开时,用户点击图标。
1.我这样做是为了创建一个笔记扩展,我已经创建了一个笔记扩展,但它在弹出界面中工作,但我想在侧边栏界面中实现。
这是我的代码
A. 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/"
]
}
内容脚本.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>
我的应用程序的屏幕截图,它在本地工作
3条答案
按热度按时间rbpvctlc1#
Chrome扩展API中没有右侧面板。
但是您可以按照示例扩展的相同方式来执行:
1.从选项卡创建
background.js
侦听消息1.如果选项卡是可插入的(如果您需要在系统页面上正确地进行扩展工作),则创建内容脚本将消息发送到
background.js
。1.如果tab是可注入的,使用
chrome.tabs.executeScript
将menu div注入到page/inject监听器,这将打开菜单。下面详细介绍如何操作。
1.创建
background.js
监听浏览器图标点击并通知您的内容脚本有关点击。1.防止在默认弹出窗口中显示
popup.html
。1.在content-script.js中,使用popup.html创建一个不可见的iframe(带有
zero width
和display:none;
样式)。我使用zero width
,因为你可能想像示例扩展一样通过jquery来动画菜单显示。1.在content-script中添加消息监听器,用于接收从
background.js
脚本发送的消息。1.当收到消息时,显示或隐藏菜单块
1.使popup.html和从扩展上下文加载的脚本对浏览器HTML上下文可见:
阅读更多
1.浏览器操作单击处理:www.example.com https://developer.chrome.com/extensions/browserAction#event-onClicked
1.内容脚本注入:https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/executeScript
dkqlctbz2#
"manifest_version": 3
的侧面板示例与版本2相同,为deprecated。manifest.json(更改
EXTENTION-KEY
):background.js:
side-panel.js:
popup.html:
r8uurelv3#
Chrome现在已经推出了114及以上版本的side panel,你可以设置一个页面,就像你会与弹出或选项页面一样。我已经编写了一个带有可克隆存储库的blog post,介绍了如何使用内容脚本,并通过端口消息传递消息来动态显示用户交互。