用JS判斷iframe跨網域下是否不正常載入
用一段簡短的js來判斷一個iframe是否有正常載入,如果說iframe是在同網域跑的話,是還好,因為你對於他的控制權更多
但是目前我遇到的是跨網域的問題,因為我是寫瀏覽器套件的時候遇到的,很常要注入iframe結果對方網站有鎖同網域的iframe,這時候就可以用這個判斷如果失敗就隱藏或者是做一些失敗的處理
這個也是我在網路上找了一段時間才找到的,想說做個筆記記錄下來,順便也分享給需要的人
先來直接看code,我這邊直接假設id ifm是一個iframe
1 | // 第一步當然是把它找出來 |
這段最重要的就是這個
1 | event.target.contentWindow.window.length |
這個方法你還需要再iframe內的網站上放一個空的iframe,這樣就可以用這個方法來判斷
這是我在stackoverflow找到的解答,我覺得是滿酷的,看起來很像是一個hack方法,但其實他只是判斷iframe裡面的window對象有沒有正常而已,當他為0的時候就是iframe載入失敗了,當她為1的時候就代表iframe載入成功了
可以看一下MDN的範例就知道了 HTMLIFrameElement.contentWindow