解決mv3版本瀏覽器插件,不能注入js腳本問題

文章目錄

  • 背景
  • 引入ifream
  • 解決ifream和父頁面完全跨域問題
  • 參考鏈接

背景

瀏覽器插件升級mv3版本后,不能再使用content_script內容腳本向原瀏覽器(top)注入script標簽達到注入腳本的目的。瀏覽器認為插入未經審核的腳本是不安全的行為。

引入ifream

由插件(擴展)插入一個ifream標簽。ifream子頁面中包含的script標簽中腳本允許插入到top頁面中。但是插入后存在跨域問題:

  1. 完全跨域(二級域名和主域名都不相同)
// 完全跨域的域名
document.domain = 'aaa.xxx.com' // 父頁面域名
document.domain = 'bbb.ccc.com' // 子頁面域名

在這里插入圖片描述

  1. 不完全跨域
// 二級域名不同,主域名相同
document.domain = 'aaa.xxx.com' // 父頁面域名
document.domain = 'bbb.xxx.com' // 子頁面域名
  1. 不跨域

這里不討論不跨域不完全跨域的問題。畢竟擴展插入的子頁面大部分都是插入到別人的網站里面。
擴展創建ifream標簽,引入子頁面:

let ifELe = document.createElement('iframe')
ifELe.src = 'domain' // 具體的邏輯由ifream子頁面處理
// ifELe.src = 'https://www.baidu.com'
ifELe.style.width = '100%'
ifELe.setAttribute('data-name', 'xxx')document.body.appendChild(ifELe)

注!引入的子頁面首先要支持被其他頁面嵌入或不包含一些限制。否則會被父頁面阻止加載。

解決ifream和父頁面完全跨域問題

跨域時,子ifream頁面不能獲取到父頁面window document對象
可以使用消息廣播進行數據傳輸,繞過跨域問題。

// ifream子頁面:監聽父頁面發來的數據:ifream里面的window對象window.addEventListener('message-type', function(e){console.log(e.detail)})// top父頁面:父頁面的window對象window.dispatchEvent(new CustomEvent('message-type', {detail: {name: '張三',age: 18}}))

參考鏈接

iframe相關及跨域解決方案 - 掘金
iframe跨域解決辦法_iframe跨域解決方案-CSDN博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163034.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163034.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163034.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python給視頻增加字幕

python給視頻增加字幕 安裝所需庫 在開始之前,我們需要安裝一些Python庫。主要使用到的庫如下: moviepy:用于處理視頻和音頻的庫。 pydub:用于處理音頻的庫。 speech_recognition:用于語音識別的庫。 首先&#xff0…

ajax請求方式處理

1、前置準備 1.1、SpringBoot項目下:寫一個controller RestController public class TestController {RequestMapping("/yyy")public void test(HttpServletRequest request, HttpServletResponse response){String yang request.getParameter("y…

AI助力鋼鐵產業數字化,python基于YOLOv5開發構建鋼鐵產業產品智能自動化檢測識別系統

AI為工業產業智能化數字化賦能早已不是什么新鮮事,越來越多的行業和領域開始更大范圍去擁抱AI,享受科技帶來的變革力量,在我們之前的文章中也有很多相關領域項目的實踐經歷,本文的核心目標就是想要基于鋼鐵領域產品數據來開發構建…

Vue框架的element組件table文字居中

1、代碼展示 <el-table:data"table.data.slice((table.currentPage - 1) * table.limit, table.currentPage * table.limit)"style"width: 100%; margin-top: 15px"border:header-cell-style"{ textAlign: center }":cell-style"{textAl…

【KMP算法】學習總結

說明&#xff1a; 文章內容為對KMP算法的總結&#xff0c;以及力扣例題&#xff1b;文章內容為個人的學習總結&#xff0c;如有錯誤&#xff0c;歡迎指正。 文章目錄 1. KMP算法1.1 算法步驟1.2 關于指針回退問題 2 . LeetCode例題 1. KMP算法 1.1 算法步驟 KMP算法通常用于…

springboot_vue知識點

代碼放到了倉庫。 springboot_vue知識點 1.搭建1.vue2.springboot 2.前后端請求和響應的封裝1.請求封裝2.響應封裝 3.增刪改查1.查詢2.分頁3.新增和編輯4.刪除 4.跨域和自定義異常5.JWT鑒權1.配置pom2.攔截前端請求的攔截器3.生成token并驗證token4.登錄后生成token5.前端獲取…

git如何查看配置,修改配置,設置配置

# 顯示當前的Git配置 $ git config --list# 編輯Git配置文件 $ git config -e [--global]# 設置提交代碼時的用戶信息 $ git config [--global] user.name "[name]" $ git config [--global] user.email "[email address]"

Grafana如何實現折線柱狀圖

程序員的公眾號&#xff1a;源1024&#xff0c;獲取更多資料&#xff0c;無加密無套路&#xff01; 最近整理了一份大廠面試資料《史上最全大廠面試題》&#xff0c;Springboot、微服務、算法、數據結構、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、數據庫等等 …

競賽選題 車位識別車道線檢測 - python opencv

0 前言 &#x1f525; 優質競賽項目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度學習 機器視覺 車位識別車道線檢測 該項目較為新穎&#xff0c;適合作為競賽課題方向&#xff0c;學長非常推薦&#xff01; &#x1f947;學長這里給一個題目綜合評分(每項滿分5分) …

從六個方面對比Go和Python的差異

您是否想過 Go 與 Python 之間的主要區別是什么&#xff1f;隨著對軟件開發人員的需求不斷增加&#xff0c;選擇哪種編碼語言可能會很困難。 ? 在此&#xff0c;我們將從六個方面對比Go和Python,探討 Go 和 Python之間的差異。我們將討論它們的特點、優缺點&#xff0c;以便…

GPT、GPT-2、GPT-3論文精讀筆記

視頻&#xff1a;GPT&#xff0c;GPT-2&#xff0c;GPT-3 論文精讀【論文精讀】_嗶哩嗶哩_bilibili MAE論文&#xff1a;把bert用回計算機視覺領域 CLIP論文&#xff1a;打通文本和圖像 GPT 論文&#xff1a;Improving Language Understanding by Generative Pre-Training …

史詩級云故障敲響警鐘,應用保障不能沒有“連續鍵”!

近日&#xff0c;知名云服務商出現一次史詩級的云故障&#xff1a;全球所有區域/所有服務同時異常&#xff0c;故障持續長達3小時之多&#xff0c;云上眾多應用受到極大影響。 如今&#xff0c;在一個充滿不確定性和復雜性的數字化時代&#xff0c;哪怕是頂級云服務商亦不能避…

python-append與extend的區別

append 和 extend 是用于向列表&#xff08;List&#xff09;添加元素的兩種不同的方法&#xff0c;它們在功能上有一些重要的區別。 append 方法&#xff1a; append 方法用于在列表的末尾添加單個元素。語法&#xff1a;list.append(element)示例&#xff1a;my_list [1, 2,…

并行與分布式計算 第9章 算法設計

文章目錄 并行與分布式計算 第9章 算法設計9.1 設計過程9.1.1 PCAM設計過程9.1.2 劃分9.1.3 通信9.1.4 組合9.1.5 映射 8.2 設計方法8.2.1 劃分技術9.2.2 分治9.2.3 平衡樹技術9.2.4倍增技術9.2.5 流水線技術9.2.6 破對稱技術 并行與分布式計算 第9章 算法設計 9.1 設計過程 …

一張圖,了解美格智能高算力AI模組

美格智能高算力A模組&#xff0c;澎湃算力讓AI觸手可及&#xff01;

數字化背景下,集流體行業的智能制造方法論

行業背景 隨著全球對清潔能源需求的不斷增加&#xff0c;新能源領域正在迅速崛起&#xff0c;在新能源技術中&#xff0c;鋰電池作為一種高效、輕便的能量儲存解決方案&#xff0c;正成為主流。而鋰電集流體作為鋰電池的核心部件&#xff0c;承擔著電池內部電流分布的關鍵角色…

掌握Java關鍵字與面試技巧的完美結合!

問題&#xff1a;請說明什么是策略模式&#xff0c;并使用Java代碼舉例說明其使用場景和實現方式。 答案&#xff1a; 策略模式是一種行為型設計模式&#xff0c;它允許在運行時根據不同的情況選擇不同的算法或策略。它將每個可選的算法封裝成一個獨立的類&#xff0c;從而使得…

服務號可以遷移到訂閱號嗎

服務號和訂閱號有什么區別&#xff1f;服務號轉為訂閱號有哪些作用&#xff1f;首先我們要看一下服務號和訂閱號的主要區別。1、服務號推送的消息沒有折疊&#xff0c;消息出現在聊天列表中&#xff0c;會像收到消息一樣有提醒。而訂閱號推送的消息是折疊的&#xff0c;“訂閱號…

RHEL 8.6 Kubespray 1.23.1 install kubernetes v1.27.7

文章目錄 1. 預備條件配置網卡download01 節點安裝 nerdctl3. download01 節點 介質下載4. bastion01節點配置 yum 源5. bastion01 離線安裝 nerdctl安裝l insecure registry配置鏡像入庫執行 set-all.sh7. bastion01 配置互信8. 啟動容器部署環境9. 部署前準備9.1 配置 extrac…