chrome插件开发:popup.html 页面获取当前页面【当前视窗】的url

chrome插件开发:popup.html 页面获取当前页面【当前视窗】的url

开发前的准备

在manifest页面配置上 tabs 权限,否则无法使用tabs接口权限

javascript 复制代码
{
  "name": "My extension",
  ...
  "permissions": [
    "tabs"
  ],
  ...
}

参考手册: http://chrome.cenchy.com/tabs.html

理清概念: 当前视窗

当前视窗

很多扩展系统的功能有一个可选的windowId参数,其默认值为当前视窗。

当前视窗是指包含当前正在执行的代码的视窗。重要的是要认识到,它可以跟最顶层或有焦点的视窗不一样。

例如,假设一个扩展从一个单一的HTML文件中创建了一些标签或视窗,而这个HTML文件包含一个chrome.tabs.getSelected的调用 。 当前视窗是指那个包含了发起调用的页面的视窗,不管它是不是最顶层视窗

在背景页这个例子中 ,当前视窗就是最后一个活动视窗。在某些情况下,背景页可能没有当前视窗。

popup.html 代码

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <link rel="stylesheet" href="">
    <script src="js/popup.js"></script>
    <style>
      h1{color:red}
      .con{ width:500px; height: 800px;}
      .h800{ }
    </style>
</head>
  <title>Popup</title>
<body  >
    <div class="con">
        <h1>这是我的第一个浏览器插件</h1>
        <hr>
        <p>当前的网址是:<span id="tabUrl"></span></p>
        <button type="button" >123</button>
    </div>

</body>
</html>

popup.js代码

javascript 复制代码
// popup.js
console.log("popup.js");
//console.log(window.location.href);
//返回的是popup.html这个当前页面
var currentUrl = window.location.href;
console.log(currentUrl);

//chrome.windows.getCurrent 获取当前视窗是指包含当前正在执行的代码的视窗 及popup.html
chrome.windows.getCurrent(function (tab){
    console.log(tab.id);

})

//chrome.tabs.getSelected获取特定窗口指定的标签。
chrome.tabs.getSelected(null, function(tab) {
  console.log('当前选中的标签页的 ID 是: ' + tab.id);
  console.log('当前选中的标签页的 URL 是: ' + tab.url);
  document.getElementById("tabUrl").innerHTML = tab.url;
});

// 当前视窗
// 很多扩展系统的功能有一个可选的windowId参数,其默认值为当前视窗。

// 当前视窗是指包含当前正在执行的代码的视窗。重要的是要认识到,它可以跟最顶层或有焦点的视窗不一样。

// 例如,假设一个扩展从一个单一的HTML文件中创建了一些标签或视窗,而这个HTML文件包含一个chrome.tabs.getSelected的调用 。 当前视窗是指那个包含了发起调用的页面的视窗,不管它是不是最顶层视窗。

// 在背景页这个例子中 ,当前视窗就是最后一个活动视窗。在某些情况下,背景页可能没有当前视窗。

效果

点击插件图片显示popup.html 显示当前窗口url

相关推荐
老华带你飞12 分钟前
商城推荐系统|基于SprinBoot+vue的商城推荐系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·商城推荐系统
JS.Huang13 分钟前
【JavaScript】Pointer Events 与移动端交互
前端·javascript
一 乐16 分钟前
物业管理系统|小区物业管理|基于SprinBoot+vue的小区物业管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端
H_HX12619 分钟前
vue3 - 图片放大镜效果实现
前端·vue.js·vue3·vueuse·图片放大镜
yinuo1 小时前
Git Submodule 与 Subtree 全方位对比:使用方式与场景选择
前端
yinuo2 小时前
深入理解与实战 Git Subtree
前端
向上的车轮2 小时前
Actix Web 不是 Nginx:解析 Rust 应用服务器与传统 Web 服务器的本质区别
前端·nginx·rust·tomcat·appche
Liudef062 小时前
基于LLM的智能数据查询与分析系统:实现思路与完整方案
前端·javascript·人工智能·easyui
潘小安2 小时前
跟着 AI 学(三)- spec-kit +claude code 从入门到出门
前端·ai编程·claude
研來如此3 小时前
XML与HTML
xml·html