1. 程式人生 > 實用技巧 >Javascript 判斷 iframe 中的變數是否為物件

Javascript 判斷 iframe 中的變數是否為物件

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。有的時候思路還是窄了,這次還是多虧同事提醒我才發現這種混亂呼叫,找到問題所在。還是要拓寬思路啊!