Baseline Widely available
contentWindow
屿§è¿å HTMLIFrameElement ç Window 对象ã
è¯¥å±æ§åªè¯»ã
å¼ä¸ä¸ª Window 对象ã
æè¿°è®¿é®ç± contentWindow
è¿åç Window
åå°åæºçç¥è§å®çè§å约æï¼è¿æå³çï¼å¦æä¸ iframe ç¶çº§åæºï¼é£ä¹ç¶çº§é¡µé¢å¯ä»¥è®¿é® iframe çææ¡£ä»¥åå
é¨ DOMï¼å¦æå®ä»¬è·¨æºï¼åç¶é¡µé¢å¯¹çªå£å±æ§çè®¿é®æéæå
¶æéãæå
³è¯¦ç»ä¿¡æ¯ï¼è¯·åé
è·¨æºèæ¬ API 访é®ã
éè¿ä¸æ¶æ¯äºä»¶ç source
屿§è¿è¡æ¯è¾ï¼è¿å¯ä»¥ä½¿ç¨è¯¥å±æ§æ¾åºæ¯åªä¸ª iframe 页é¢åéäº Window.postMessage()
ã
æ¤ç¤ºä¾ä¿®æ¹äºææ¡£ä¸»ä½ç style
屿§ã
请注æï¼è¿åªæå¨ iframe ççªå£ä¸å
¶ç¶çªå£åæºçæ
åµä¸æææï¼å¦åï¼å°è¯è®¿é® contentWindow.document
ä¼åºç°å¼å¸¸ã
const iframe = document.querySelector("iframe").contentWindow;
iframe.document.querySelector("body").style.backgroundColor = "blue";
// è¿å°ä½¿ææ¡£ä¸ç第ä¸ä¸ª iframe åæèè²ã
å°æ¶æ¯æºæ å°å° iframe
æ¤ç¤ºä¾å¯å¨å
å«å¤ä¸ª iframe ç页é¢ä¸è¿è¡ï¼å
¶ä¸ä»»ä½ä¸ä¸ªé½å¯ä»¥ä½¿ç¨ Window.postMessage()
åéä¿¡æ¯ãå½é¡µé¢æ¥æ¶å°æ¶æ¯æ¶ï¼å°±ä¼ç¥éåªä¸ª iframe å
å«åéæ¶æ¯ççªå£ã
为äºåå°è¿ä¸ç¹ï¼å½æ¥æ¶å°æ¶æ¯æ¶ï¼é¡µé¢é¦å
æ£æ¥æ¶æ¯æ¯å¦æ¥èªé¢æçæºï¼ç¶åéè¿æ¯è¾æ¶æ¯äºä»¶ç source
屿§å iframe ç contentWindow
屿§æ¥æ¾å°æ¶æ¯æ¥èªåªä¸ª iframeã
const expectedOrigin = "https://example.org";
const iframes = Array.from(document.querySelectorAll("iframe"));
window.addEventListener("message", (e) => {
if (e.origin !== expectedOrigin) return;
const sourceIframe = iframes.find(
(iframe) => iframe.contentWindow === e.source,
);
console.log(sourceIframe);
});
è§è æµè§å¨å
¼å®¹æ§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4