iframe里阻止_blank彈出新窗口的方法
近弄個(gè)東西,需要用到iframe,但是加載的網(wǎng)頁(yè)中有_blank,不能讓他跳出來(lái)。
如果想讓目的網(wǎng)址的_blank刪除,這是不可能的。
網(wǎng)上找了很多的資料,要么是跨域不能修改.要么就根本牛頭不對馬嘴
后來(lái),看到了html5里iframe有個(gè)叫sandbox的屬性把 iframe 里的網(wǎng)頁(yè)給關(guān)籠子里的屬性
所以,就來(lái)找找這個(gè)的用法.
<iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms"
src="http://www.wenshannxcs.cn"
style="border: 0; width:130px; height:20px;"></iframe>
我們在上面的示例中看到了一些可能的沙盒標志,現在讓我們更詳細地研究一下該屬性的內部工作原理。
給定具有空沙盒屬性 ( <iframe sandbox src="..."> </iframe>) 的 iframe,框架文檔將被完全沙盒化,并受到以下限制:
JavaScript 不會(huì )在框架文檔中執行。這不僅包括通過(guò)腳本標簽顯式加載的 JavaScript,還包括內聯(lián)事件處理程序和 javascript: URL。這也意味著(zhù)將顯示 noscript 標簽中包含的內容,就像用戶(hù)自己禁用了腳本一樣。
加框的文檔被加載到一個(gè)唯一的原點(diǎn),這意味著(zhù)所有的同源檢查都將失??;獨特的起源與其他起源不匹配,甚至它們自己也不匹配。除其他影響外,這意味著(zhù)文檔無(wú)法訪(fǎng)問(wèn)存儲在任何來(lái)源的 cookie 或任何其他存儲機制(DOM 存儲、索引數據庫等)中的數據。
框架文檔無(wú)法創(chuàng )建新窗口或對話(huà)框(例如,通過(guò)window.open或 target="_blank")。
無(wú)法提交表格。
插件不會(huì )加載。
框架文檔只能導航自己,不能導航其頂級父級。設置window.top.location會(huì )拋出異常,點(diǎn)擊鏈接 target="_top"無(wú)效。
自動(dòng)觸發(fā)的功能(自動(dòng)聚焦的表單元素、自動(dòng)播放視頻等)被阻止。
無(wú)法獲得指針鎖。
框架文檔包含的seamless屬性被忽略。iframes
這是非常嚴格的,加載到完全沙盒中的文檔iframe 確實(shí)構成的風(fēng)險很小。當然,它也沒(méi)有多大價(jià)值:對于一些靜態(tài)內容,您可能可以使用完整的沙盒來(lái)擺脫困境,但大多數時(shí)候您會(huì )希望稍微放松一下。
除了插件之外,這些限制中的每一個(gè)都可以通過(guò)在沙箱屬性的值中添加一個(gè)標志來(lái)解除。沙盒文檔永遠不能運行插件,因為插件是未沙盒的本機代碼,但其他一切都是公平的游戲:
allow-forms允許表單提交。
allow-popups允許彈出窗口(window.open()、showModalDialog()、target=”_blank”等)。
allow-pointer-lock允許(驚喜?。┲羔樻i定。
allow-same-origin允許文件保持其來(lái)源;從中加載的頁(yè)面https://example.com/將保留對該來(lái)源數據的訪(fǎng)問(wèn)權限。
allow-scripts允許 JavaScript 執行,也允許特性自動(dòng)觸發(fā)(因為通過(guò) JavaScript 實(shí)現它們很簡(jiǎn)單)。
allow-top-navigation允許文檔通過(guò)導航頂級窗口跳出框架。
考慮到這些,我們可以準確評估為什么我們最終會(huì )在上面的 Twitter 示例中使用特定的沙盒標志集:
allow-scripts是必需的,因為加載到框架中的頁(yè)面會(huì )運行一些 JavaScript 來(lái)處理用戶(hù)交互。
allow-popups是必需的,因為該按鈕會(huì )在新窗口中彈出一個(gè)推文表單。
allow-forms是必需的,因為推特表單應該是可提交的。
allow-same-origin是必要的,否則 twitter.com 的 cookie 將無(wú)法訪(fǎng)問(wèn),并且用戶(hù)無(wú)法登錄以發(fā)布表單。
需要注意的重要一點(diǎn)是,應用于框架的沙盒標志也適用于在沙盒中創(chuàng )建的任何窗口或框架。這意味著(zhù)我們必須添加allow-forms到框架的沙箱中,即使表單只存在于框架彈出的窗口中。
使用該sandbox屬性后,小部件僅獲得它所需的權限,并且插件、頂部導航和指針鎖定等功能仍然被阻止。我們降低了嵌入小部件的風(fēng)險,沒(méi)有任何不良影響。這對所有相關(guān)人員來(lái)說(shuō)都是一場(chǎng)勝利。
參考網(wǎng)址:https://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/
- 相關(guān)閱讀
- 利用正則替換生成html,經(jīng)典的,可以用數組進(jìn)行替換
- 深山行者留言系統V2.0 (簡(jiǎn)稱(chēng)留言板V2.0)
- Python PyInstaller安裝和使用教程(詳解版)
- jQuery設置提交表單disabled屬性所有input、button、extarea、select、checkbox、radio都生效
- 吉林省文化國際旅行社有限公司
- 地瓜坊
- html中meta標簽詳解
- 中國簽證行業(yè)領(lǐng)導者--91出國簽證網(wǎng)
- 共有0條關(guān)于《iframe里阻止_blank彈出新窗口的方法》的評論
- 發(fā)表評論
您發(fā)布的評論即表示同意遵守以下條款:
一、不得利用本站危害國家安全、泄露國家秘密,不得侵犯國家、社會(huì )、集體和公民的合法權益;
二、不得發(fā)布國家法律、法規明令禁止的內容;互相尊重,對自己在本站的言論和行為負責;
三、本站對您所發(fā)布內容擁有處置權。
- 更多信息>>欄目類(lèi)別選擇
- 百度小程序開(kāi)發(fā)
- 微信小程序開(kāi)發(fā)
- 微信公眾號開(kāi)發(fā)
- uni-app
- asp函數庫
- ASP
- DIV+CSS
- HTML
- python
- 更多>>同類(lèi)信息
- javascript獲取瀏覽器指紋可以用來(lái)做投票
- 火狐Mozilla Firefox出現:無(wú)法載入您的Firefox配置文件 它可能已經(jīng)丟失 或是無(wú)法訪(fǎng)問(wèn) 問(wèn)題解決集合處理辦法
- DW設置之后更好用 DreamweaverCS編輯GB2312與UTF-8文件在代碼視圖中點(diǎn)擊鼠標錯位問(wèn)題的解決辦法
- js指定日期加n天加n月加n年
- jquery中動(dòng)態(tài)生成的代碼使用on hover事件時(shí)不出現效果
- iframe里阻止_blank彈出新窗口的方法
- 更多>>最新添加文章
- 抖音直播音掛載小雪花 懂車(chē)帝小程序
- javascript獲取瀏覽器指紋可以用來(lái)做投票
- 火狐Mozilla Firefox出現:無(wú)法載入您的Firefox配置文件 它可能已經(jīng)丟失 或是無(wú)法訪(fǎng)問(wèn) 問(wèn)題解決集合處理辦法
- 在A(yíng)ndroid、iOS、Windows、MacOS中微信小程序的文件存放路徑
- python通過(guò)代碼修改pip下載源讓下載庫飛起
- python里面requests.post返回的res.text還有其它的嗎
- aliyun阿里云續費域名優(yōu)惠口令(注冊、續費都可以使用)
- windows7環(huán)境下安裝配置jdk