第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

iframe 內(nèi)的 Vue 3 實例中事件監(jiān)聽器的延遲注冊

iframe 內(nèi)的 Vue 3 實例中事件監(jiān)聽器的延遲注冊

桃花長相依 2023-08-10 14:36:28
當(dāng)將新元素添加到 中時iframe,用戶事件(即單擊)需要相當(dāng)長的時間才能開始被識別。(在我的場景中更加明顯,以至于完全無法使用)精通 Vue 的人是否至少了解為什么會發(fā)生這種情況以及是否有辦法防止它發(fā)生?任何見解將不勝感激。謝謝。*原因是我正在構(gòu)建一個瀏覽器擴展,將側(cè)邊欄注入到頁面中,并且我需要隔離CSS,因為該擴展要在各個頁面上使用,所以幾乎不可能防止所有樣式泄漏到頁面中注入側(cè)邊欄。是的,避免iframe使用 and using#myDiv{ all: unset }在某種程度上是有效的,但對于頁面 CSS 中定義的一些非常具體的選擇器來說會失敗(并且完全不適用于input元素)。在我想要支持的所有頁面上尋找它們很快就會變成一場噩夢。
查看完整描述

1 回答

?
HUX布斯

TA貢獻1876條經(jīng)驗 獲得超6個贊

回答我自己的問題,因為沒有人對此有任何解釋。然而,這并沒有回答最初的問題,但我認為如果有人偶然發(fā)現(xiàn)這個問題,他們應(yīng)該知道我是如何解決它的。

最后,我放棄了 iFrame 的想法,并使用Shadow DOM的概念來將頁面的 CSS 和注入的擴展的 CSS 彼此隔離。

盡管這種方法有其自身的注意事項*,但恕我直言,它優(yōu)于使用 iframe。

*就像需要手動將自定義樣式注入到影子根中一樣。并且還需要將影子根元素存儲在應(yīng)用程序所有部分都可以訪問的地方(不是 Vuex,元素本身不能存儲在那里),以便使諸如此類的事情正常工作。

這是我用來將側(cè)邊欄注入頁面的代碼片段:

// append a new node to the document body

let shadowHost = document.createElement("div");

document.body.appendChild(shadowHost);

? ??

// make it the root of our shadow DOM

let shadow = shadowHost.attachShadow({ mode: 'open'})


// create a new node for the sidebar

let sidebar = document.createElement("div");

sidebar.id = "my-sidebar";


// and also a style node into which we put all our custom css

const style = document.createElement('style');

// getPackedCss is my function that returns all the custom css as a string

style.textContent = getPackedCss();


// and append those to the shadow DOM

shadow.appendChild(style);

shadow.appendChild(sidebar);

? ??

// store the shadow root somewhere that we can access

// globally in order to select elements from it

staticStore.shadowRoot = shadow;


// create our vue app and mount it to the shadow DOM

const app = createApp(MyApp);

app.mount(sidebar);

如果您確實需要 Vue 3 和 iframe 來互相點贊,我想您只能靠自己了。


查看完整回答
反對 回復(fù) 2023-08-10
  • 1 回答
  • 0 關(guān)注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號