Chrome扩展程序开发
HTML 2025-06-19 11:00 29
因为屏幕大小限制,经常需要将Iframe页面在新标签页打开,因此开发一个扩展程序快速在新标签页打开Iframe
Chrome扩展程序需要一个manifest.json用于定义一些基础数据
manifest.json:
{ "name": "Iframe In New Tab", "description": "Open iframe Page In New Tab Quickly", "version": "1.0", "manifest_version": 3, "action": { "default_popup": "popup.html", "default_icon": "newtab_16.png" }, "permissions": [ "contextMenus" ], "background": { "service_worker": "background.js", "type": "module" }, "icons": { "16": "newtab_16.png", "48": "newtab_48.png", "128": "newtab_128.png" } }
需要注意action、permissions、background
action定义安装扩展程序后,浏览器右上方扩展程序按钮相关行为,default_popup为点击扩展程序图标后对应的页面,因为我们程序没有交互,因此给出简单提示
popup.html:
<html> <style> html, body { min-width: 205px; min-height: 33px; } hr { width: 100%; } </style> <body> <h1></h1> <p> <b>Iframe In New Tab</b> <br> Right-click the iframe area for options. </p> </body> </html>
permissions为该扩展程序需要的权限,我们的扩展程序需要在浏览器创建右键菜单,因此声明contextMenus
扩展程序可以在后台通过扩展程序的"service worker"监听浏览器事件,background用于指定你的相关监听代码,我们会在这里监听扩展程序安装事件,为页面创建右键菜单,以及该菜单的点击事件
background.js:
// 注册扩展程序安装事件,会在扩展程序被安装、扩展程序更新、浏览器更新时执行 chrome.runtime.onInstalled.addListener(function () { chrome.contextMenus.create({ id: "iframe_menu", title: 'Open In New Tab', type: 'normal', contexts: ['frame'] }); }); // 监听菜单点击事件 chrome.contextMenus.onClicked.addListener((info, tab) => { if (info.menuItemId === "iframe_menu") { // 获取iframe的URL const frameUrl = info.frameUrl; if (frameUrl) { chrome.tabs.create({ url: frameUrl, index: tab.index + 1 }); } } });
将以上代码及相关图片资源放入一个文件夹中,打开Chrome扩展程序页面,启用开发者模式后,点击加载已解压的扩展程序,即可使用扩展程序
使用效果展示:
完整源码:Github
参考资料:
发布于 2025-06-19 11:00, 最后修改于2025-06-20 08:59
© 2019 - ZXQ's Diary - zhangxiaoqiang.top