Javascript 判斷 iframe 中的變數是否為物件
阿新 • • 發佈:2020-09-22
Javascript 判斷 iframe 中的變數是否為物件
前言
公司之前的專案中,為了實現模組化,再 web 後端使用了 iframe 來組織框架和頁面。由於當時沒有很好地規劃,iframe 子頁面和框架主頁面裡面的 js 類庫經常混用(即 iframe 子頁面利用 top 物件呼叫框架主頁面的方法),因此出現了本例的 chrome 中 iframe 子頁面中的變數值在框架主頁面中判斷是否為物件的問題。
復現
本文藉助 chrome 的控制檯模擬 框架主頁面 和 iframe 子頁面
在框架主頁面中定義一個變數 a,並判斷其是否為物件:
在 iframe 子頁面中定義一個變數 b,並判斷其是否為物件:
可以發現,一切正常。
而在 iframe 子頁面中判斷框架主頁面的變數是否為物件:
或將 iframe 子頁面的物件傳入框架主頁面進行判斷:
結果都為 false!
解決
可以使用如下方法判斷變數值是否為物件:
Object.prototype.toString.call(<YOUR_OBJ_PARAM>) === '[object Object]'
當然,還是不建議混用 iframe 子頁面和框架主頁面的 js 類庫。
參考
https://blog.csdn.net/zhangjing0320/article/details/81230170
後記
瑪德真的哭了,這些程式碼都不是我寫的,為什麼他們之前看都好好的,一到我來看就各種報錯。算上這個,已經是這兩週的第三次了QAQ。有的時候思路還是窄了,這次還是多虧同事提醒我才發現這種混亂呼叫,找到問題所在。還是要拓寬思路啊!