ä½¿ç¨æ ç¾æ¶ï¼ä½ å¯è½ä¼å¿½ç¥çä¸ä¸ªå®å ¨é®é¢
å¨ä¸ä¸ªæ°çªå£ä¸æå¼é¾æ¥æ¯å端å¼åä¸ä¸ä¸ªå¾å¸¸è§çé»è¾ï¼å®å¯ä»¥å°ç¨æ·å¼å¯¼å°ä¸ä¸ªæ°çååãæä»¬å¯ä»¥ç¨target='_blank'
æ¥å®ç°è¿ä¸ªåè½ãææ¢è¯å®ï¼æ¯ä¸ªäººé½ä¼å¨ä»çæä¸ªé¡¹ç®ä¸ä½¿ç¨è¿target='_blank
ï¼ä½æ¯æä¸ç¡®å®æ¯å¦æ¯ä¸ªäººé½ç¥éè¿ç§ç¨æ³ç缺é·ã
å½ä¸ä¸ªå¤é¨é¾æ¥ä½¿ç¨äºtarget='_blank
'çæ¹å¼ï¼è¿ä¸ªå¤é¨é¾æ¥ä¼æå¼ä¸ä¸ªæ°çæµè§å¨tabãæ¤æ¶ï¼æ°é¡µé¢ä¼æå¼ï¼å¹¶ä¸ååå§é¡µé¢å ç¨åä¸ä¸ªè¿ç¨ãè¿ä¹æå³çï¼å¦æè¿ä¸ªæ°é¡µé¢æä»»ä½æ§è½ä¸çé®é¢ï¼æ¯å¦æä¸ä¸ªå¾é«çå è½½æ¶é´ï¼è¿ä¹å°ä¼å½±åå°åå§é¡µé¢ç表ç°ãå¦æä½ æå¼çæ¯ä¸ä¸ªååç页é¢ï¼é£ä¹ä½ å°å¯ä»¥å¨æ°é¡µé¢è®¿é®å°åå§é¡µé¢çææå
容ï¼å
æ¬document
对象(window.opener.document
)ãå¦æä½ æå¼çæ¯ä¸ä¸ªè·¨åç页é¢ï¼ä½ è½ç¶æ æ³è®¿é®å°document
ï¼ä½æ¯ä½ ä¾ç¶å¯ä»¥è®¿é®å°location
对象ã
è¿æå³çï¼å¦æä½ å¨ä½ çç«ç¹æè
æç« ä¸ï¼åµå
¥äºéè¿æ°çªå£æå¼ä¸ä¸ªæ°é¡µé¢ç龿¥ï¼è¿ä¸ªæ°é¡µé¢å¯ä»¥ä½¿ç¨window.opener
ï¼å¨ä¸å®ç¨åº¦ä¸æ¥ä¿®æ¹åå§é¡µé¢ã
举个ä¾åï¼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<H2>a页é¢</H2>
<a href="b.html" target="_blank" >ç¹æè·³å°b页é¢</a>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h2>b页é¢</h2>
<script>window.opener.location.href='https://www.baidu.com/?tn=48021271_12_hao_pg'</script>
</body>
</body>
</html>
å
¶ä¸å¨a.htmlä¸æä¸ªè¶
龿¥ï¼ç¹å»åæå¼æ°çtab页ï¼ç¥å¥çåç°åtab页已ç»åæäºç¾åº¦é¡µé¢ãåå æ¯ä½¿ç¨target=_blank
æå¼æ°ççªå£æ¶ï¼èµäºäºæ°ççªå£ä¸äºæéå¯ä»¥æä½åtab页ï¼å
¶ä¸window.location
å°±æ¯ä¸ä¸ªãä¸ä½¿ç¨ rel=noopener
å°±æ¯è®©ç¨æ·æ´é²å¨éé±¼æ»å»ä¸ã
å æ¤ï¼
彿¨ç页é¢é¾æ¥è³ä½¿ç¨ target="_blank" çå¦ä¸ä¸ªé¡µé¢æ¶ï¼æ°é¡µé¢å°ä¸æ¨çå页é¢å¨åä¸ä¸ªè¿ç¨ä¸è¿è¡ã 妿æ°é¡µé¢æ£å¨æ§è¡å¼éæå¤§ç JavaScriptï¼æ¨çå页颿§è½å¯è½ä¼åå½±åã
æ¤å¤ï¼target="_blank" 乿¯ä¸ä¸ªå®å ¨æ¼æ´ãæ°ç页é¢å¯ä»¥éè¿ window.opener è®¿é®æ¨ççªå£å¯¹è±¡ï¼å¹¶ä¸å®å¯ä»¥ä½¿ç¨ window.opener.location = newURL å°æ¨ç页é¢å¯¼èªè³ä¸åçç½åã
é£ä¹é®é¢æ¥äºï¼æä»¬å¦ä½é»æ¢è¿ç§æ
åµçåçå¢ï¼å¨ææä½¿ç¨target=_blank
æå¼æ°é¡µé¢ç龿¥ä¸ï¼å ä¸rel="noopener"
ã
使ç¨rel='noopener'çå ¼å®¹æ§
rel=noopener
为äºé²æ¢window.opener
被滥ç¨ï¼å¨ä½¿ç¨targrt=_blank
æ¶éè¦å ä¸rel=noopener
<a href="www.baidu.com" target="_blank" rel="noopener" >
rel=norefferrerï¼åå¨å¼ç«¯ï¼
å¨èæµè§å¨ä¸ï¼ä½ å¯ä»¥ä½¿ç¨rel=noreferrer
屿§ï¼å
·æåæ ·çææã使¯ï¼è¿æ ·ä¹ä¼é»æ¢Referer
header被åéå°æ°é¡µé¢ã
rel=noopener
æ¯æchrome49åopera36ï¼ä¸æ¯æç«çï¼ä¸ºäºå
¼å®¹éè¦å ä¸rel=noreferrer
<a href="b.html" target="_blank" rel="noopener norefferrer" >
使ç¨äºrel=noopener
以åï¼å½ä¸ä¸ªæ°é¡µé¢éè¿ä¸ä¸ªé¾æ¥æå¼åï¼æ°é¡µé¢ä¸çæ¶æJavaScript
代ç å°æ æ³éè¿window.opener
æ¥è®¿é®å°åå§é¡µé¢ãè¿å°ä¿è¯æ°é¡µé¢è¿è¡å¨ä¸ä¸ªåç¬çè¿ç¨éã
å¨ä¸é¢çä¾åä¸ï¼ä½¿ç¨äºrel="noreferrer"
ï¼å½ä¸ä¸ªç¨æ·ç¹å»äºè¿ä¸ªè¶
龿¥è¿å
¥å°æ°é¡µé¢åï¼æ°é¡µé¢æ¿ä¸å°referrer
ä¿¡æ¯ãè¿å°æå³çï¼æ°é¡µé¢ä¸ç¥éç¨æ·æ¯ä»åªéæ¥çã
å¦æä½ éè¿JavaScript
ä¸çwindow.open
æå¼ä¸ä¸ªé¡µé¢çè¯ï¼ä¸ææè¯´çé½éç¨ï¼å ä¸ºä½ ä¹æ¯æå¼äºä¸ä¸ªæ°ççªå£ãå¨è¿ç§æ
åµä¸ï¼ä½ ä¸å¾ä¸æ¸
餿opener
对象ï¼
var newWindow = window.open();
newWindow.opener = null;
å¨æçæ¥ï¼ä½¿ç¨ç¬¬ä¸ç§è§£å³æ¹æ¡(卿¯ä¸ä¸ªtarget="_blank"
ç龿¥ä¸å ä¸rel="noopener"
)æ¯æ²¡æä»ä¹ææ¾çåå¤çãè¿ä¸ªé®é¢è¡¨æï¼å¨ä½ çç½é¡µå®å
¨æ§ä¸æ¾å°æ¼æ´æ¯å¤ä¹ç容æã
æ»ç»
主è¦ä»ç»äºå¨ä½¿ç¨<a target="_blank">
æ ç¾æå¼ä¸ä¸ªæ°çªå£è¿ç¨ä¸çå®å
¨é®é¢ãæ°é¡µé¢ä¸å¯ä»¥ä½¿ç¨window.opener
æ¥æ§å¶åå§é¡µé¢ã妿æ°è页é¢ååï¼é£ä¹å¨æ°é¡µé¢ä¸å¯ä»¥ä»»ææä½åå§é¡µé¢ã妿æ¯ä¸ååï¼æ°é¡µé¢ä¸ä¾ç¶å¯ä»¥éè¿window.opener.location
ï¼è®¿é®å°åå§é¡µé¢çlocation
对象ã
è¯æ³ä¸ä¸ï¼ä½ å¨èªå·±ça页é¢ä¸ï¼éè¿<a target="_blank" href="http://b.com">
æå¼æ°çªå£ï¼è·³è½¬å°äºb页é¢ï¼æ¤å»b页é¢ä¸æä¸æ®µä»£ç window.opener.location = 'http://c.com'
ãè¿æ¶ï¼a页é¢å°±ä¼èªå¨è·³è½¬å°c页é¢ã妿è¿ä¸ªc页颿¯ä¸ä¸ªåa页é¢é¿å¾ä¸æ ·çéé±¼ç½ç«ï¼é£ä¹ç¨æ·å¯è½å°±ä¸æäºã
è§£å³æ¹æ³å°±æ¯ï¼å¨å¸¦ætarget="_blank"
ç<a>
æ ç¾ä¸ï¼å ä¸rel="noopener"
屿§ãå¦æä½¿ç¨window.open
çæ¹å¼æå¼é¡µé¢ï¼å°opener
对象置为空ãè¿æ ·çå¯ä½ç¨æ¯ï¼å¨æäºä½çæ¬æµè§å¨ä¸ï¼æ°é¡µé¢ä¸æ¿ä¸å°referer
ä¿¡æ¯ã
è¥æä¸è¶³è¯·å¤å¤ææï¼å¸æç»æ¨å¸¦æ¥å¸®å©ï¼