亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

無法使用 JavaScript 訪問自定義 HTML 標簽內的 DOM 元素

無法使用 JavaScript 訪問自定義 HTML 標簽內的 DOM 元素

慕桂英546537 2021-10-29 16:24:44
我有幾個帶有很長下拉列表的后端 Salesforce (SF) 頁面(例如多達 1,000 個選項),我想在 Chrome 書簽中使用 JS 代碼將過濾器框添加到頁面上的任意 SELECT(代碼如下)。我認為,問題在于我想要訪問的節點位于名為force-aloha-page.就我而言,我要訪問的第一個元素是自定義元素內的 IFRAME。(這不是跨站點安全問題,因為即使來源不好,JS 仍會獲得 IFRAME,只是其中沒有任何內容。)例如,我可以檢查代碼并查看自定義 HTML 元素,查看 iframe,并且可以查看頁面上 iframe 的內容。如果我只是將節點轉儲到控制臺,它會顯示 JS 無法訪問的 DOM 元素:document.getElementsByTagName("FORCE-ALOHA-PAGE")[0]<force-aloha-page data-data-rendering-service-uid="203" data-aura-rendered-by="505:0" force-alohapage_alohapage-host><div force-alohapage_alohapage class="iframe-parent slds-template_iframe slds-card"><iframe force-alohapage_alohapage height="100%" width="100%" scrolling="yes" allowtransparency="true" name="vfFrameId_1569557364522" title="Page Configuration" allowfullscreen="true" lang="en-US" allow="geolocation *; microphone *; camera *">…</iframe></div></force-aloha-page>我可以看到元素div的iframe內部和內部force-aloha-page。但是,如果我嘗試訪問 iframe,就會發生這種情況:document.getElementsByTagName('IFRAME')0document.querySelectorAll("iframe")0JS 可以看到自定義元素:document.getElementsByTagName("FORCE-ALOHA-PAGE").length1但里面什么都沒有:document.getElementsByTagName("FORCE-ALOHA-PAGE")[0].childNodes.length0即使上面的“節點轉儲”有效,這也沒有:document.getElementsByTagName("FORCE-ALOHA-PAGE")[0].innerHTML""進入 iframe 后,我可能會遇到其他問題,但我必須先通過該自定義標記。我試過的我在 Chrome 中創建了 JS 書簽,它可以在主頁和 IFRAME 中的 SELECT 上使用,并具有良好的 XSS。但不適用于自定義標簽內的 SELECT。這是我在編寫書簽代碼時使用的測試頁。
查看完整描述

2 回答

?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

該force-aloha-page元素可能是一個Web 組件,這可以解釋為什么您無法訪問內部的 DOM,因為它是一個Shadow DOM。


嘗試使用該shadowRoot屬性訪問它,如下所示:


class ForceAlohaPage extends HTMLElement {

    

    constructor() {

        super();

        this.attachShadow({

            mode: 'open'

        }).innerHTML = '<iframe force-alohapage_alohapage height="100%" width="100%" scrolling="yes" allowtransparency="true" name="vfFrameId_1569557364522" title="Page Configuration" allowfullscreen="true" allow="geolocation *; microphone *; camera *"></iframe>';

    }

}


customElements.define("force-aloha-page", ForceAlohaPage);


console.log(document.getElementsByTagName('iframe').length);


console.log(document.getElementsByTagName("force-aloha-page")[0].childNodes.length);


console.log(document.getElementsByTagName("force-aloha-page")[0].innerHTML);


console.log(document.getElementsByTagName('force-aloha-page')[0].shadowRoot.childNodes[0]);

<force-aloha-page></force-aloha-page>


查看完整回答
反對 回復 2021-10-29
  • 2 回答
  • 0 關注
  • 258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號