概述
IPTV機頂盒開發有很多的坑,爬不完的坑,當然其他開發也是一樣……哈哈哈。今天我來說一下IPTV-B/S
模式開發中調試的坑。如果你開發過機頂盒項目(以下都特指B/S
模式)[沒開發過的肯定也不會看這篇文章],那你肯定經歷過這種時候……寫完一堆代碼,然後瀏覽器上初步看一遍,哇,完美!趕緊上傳服務器,使用機頂盒跑一下,免得代碼自動消失了,哈哈哈。一頓 cd
ll
cp
rm -rf /
操作後,啓動機頂盒,咦~黑屏,肯定是緩存原因,代碼還未更新到,肯定不是我代碼的錯……等等再重啓下,還是黑屏???what??難道真的代碼出錯???怎麼辦?斷點調試下吧(這種方式心裏想想就好了)機頂盒上根本打不開控制檯好吧!!!此處建議儘早放棄,不過爲了工作,畢竟工作使我快樂,還是不放棄吧……繼續爬坑。打不開控制檯,無法調試,那就console.log唄,多加一些,看看哪些打印了,哪些沒打印唄,這不就一樣能定位嘛!但……無法打開控制檯!!!淚崩……怎麼辦,那就只能用最另一種宇宙最強的JS API
document.getElementById
我打印到頁面上總行吧,好吧,遇到比較正常的問題的話,用這種方式也就完美解決了!哎,送了口氣……終於解決了!頁面總算是打開了,但是……居然焦點不能移動……啊,要崩潰,坑定代碼哪裏又報錯,機頂盒的瀏覽器真是小氣啊,啥高級屬性都不能用,又怎麼辦?
TVConsole
來了,來了,它來了。TVConsole是一個js組件,將其引入頁面中,可以顯示出一個面板,也就是一個簡易的瀏覽器控制檯,就像這樣。
這看起來是不是很像一個東西?對,沒錯,就是VConsole騰訊開發的一款移動端的控制檯調試器,最初是用於微信公衆號、小程序開發這方便調試用,後來,當程序員都發現了這個東西后,You Know,好東西總是會被用於很多地方,也就普及了。我也就基於這套東西,再包裝了一層,用於機頂盒。
爲什麼再封裝?
其實不止是封裝,我還修改了一點源代碼,這也造成了源碼的污染,不利於升級。未來準備採用插件開發,不污染源碼,也可以隨着主框架的升級而伴隨升級。
迴歸主題,爲什麼要封裝?因爲機頂盒開發不同於其他移動端和PC,移動端和PC都可以很容易觸發 touch
click
等事件,但是機頂盒不喫你這套,所有操作都是 遙控器
,對,就是這東西!要想點擊,那就得重新監聽 document.onkeydown
事件,然後觸發邏輯。所以咯,再封裝了一層。
不講代碼,只講使用
這裏不講代碼,但是你可以在這裏TVConsole https://gitee.com/underline/TVConsole
查看代碼啊!已經上傳碼雲。
使用:
- 下載
dist/tvconsole.min.js
- 引入到頁面
<script src="path/to/tvconsole.min.js"></script>
建議在head中引入 - 初始化一個實例
var tvconsole = new TVConsole()
- 此後可以觸發
tvconsole.show()
顯示界面 - 更多方法,請看這裏https://gitee.com/underline/TVConsole
進入界面後都是一些按鍵操作,按鍵後面板右上角會顯示你的按鍵,目前支持的按鍵有(並持續更新):
-
1
: 顯示Log
面板 -
11
: 顯示Log
下的All
面板,12
: 顯示Log
下的Log
面板,以此類推 -
2
: 顯示System
面板 -
21
:顯示System
下的All
面板,以此類推 -
#
: 隱藏控制檯面板 -
*
:展開控制檯打印的Object
信息 -
**
:收起控制檯打印的Object
信息
暫時完了……在開發的路上越走越遠