背景
是一個vue的前端模塊,在系統集成的時候,出了問題。
這個前端模塊有一個全屏顯示的功能,單獨運行前端模塊的時候,全屏功能正常。
可是集成到系統的時候,全屏方法無效並報錯。
很長一段時間我甚至是懷疑vue打包有問題,但單獨打包前端的時候,發現它沒毛病,這里給vue跪下道歉。
報錯信息
控制台報錯:Uncaught (in promise) TypeError: fullscreen error
這里所使用的全屏顯示的方法是:
el.requestFullscreen();
(el = 需要全屏的dom對象)
退出全屏的方法是:
document.exitFullscreen()
(運行環境是谷歌瀏覽器)
打了斷點,單獨運行模塊的時候,我上文中的document是這樣的:
集成到系統以后,document對象變成了這樣:
document.fullScreenEnabled這個參數從true變成了false。
而它所象征的含義是:瀏覽器不支持全屏,或者當前環境下不允許全屏。
嘗試過但無效的解決方案
試着在el.requestFullscreen();之前,手動document.fullScreenEnabled = true;無效,這個參數立即轉變成了false.
解決辦法
這里的模塊,是作為一個iframe引入到系統之中的,引入這個iframe的時候,需要添加屬性:allowfullscreen="true"
例如:
<iframe allowfullscreen="true" width="100%" height="100%" src=""></iframe>
還有個重點:如果iframe里面還引用了其他的iframe,也統統需要加入allowfullscreen="true"屬性。
哇這玩意簡直折騰死我了,主要還是格局小了,一直在模塊內亂竄找bug,沒有去把整個系統在本地跑起來試試,哎,格局小了格局小了。