關於釘釘投屏功能(通過企業工作臺設置投屏)無法通過js取得數據的問題

在工作中,爲了將業務團隊的服務構建狀態展示(jenkins上的數據),更好的提醒業務團隊去及時的處理問題,公司決定將構建數據展示到釘釘投屏上,定時刷新。

項目前端使用vue+element+nodejs的構架,webpack打包之後生成的都是靜態的html文件,通過axios進行後臺請求,在功能開發的過程中沒有任何問題,但是釘釘投屏卻顯示不出來。索性將全部的請求都註釋掉,只留下html標籤,頁面投出來了。所以發現問題了,就是用釘釘投屏的功能不支持js從後臺取數據(不知道釘釘是不是真的有這問題,也有可能我這個項目是前後端分離的問題,反正我遇到的就是這個樣子的)。

所以改爲另一種請求方式,xmlHttp請求後臺的方式。

XmlHttp是一套可以在Javascript、VbScript、Jscript等腳本語言中通過http協議傳送或從接收XML及其他數據的一套API。XmlHttp最大的用處是可以更新網頁的部分內容而不需要刷新整個頁面。
來自MSDN的解釋:XmlHttp提供客戶端同http服務器通訊的協議。客戶端可以通過XmlHttp對象(MSXML2.XMLHTTP.3.0)向http服務器發送請求並使用微軟XML文檔對象模型Microsoft® XML Document Object Model (DOM)處理迴應。

現在的絕對多數瀏覽器都增加了對XmlHttp的支持,IE中使用ActiveXObject方式創建XmlHttp對象,其他瀏覽器如:Firefox、Opera等通過window.XMLHttpRequest來創建xmlhttp對象。

代碼如下:

var xmlHttp;
            if(window.ActiveXObject){//這裏進行判斷是爲了兼容IE瀏覽器
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }else if(window.XMLHttpRequest){
                xmlHttp = new XMLHttpRequest();
            }

var url="*******/getScreenCiList?page=1&limit=10";//這裏是請求的後端接口地址,可以改成自己的

xmlHttp.responseType = 'json'
            xmlHttp.overrideMimeType("application/json");
            xmlHttp.open("GET",url,true);//創建一個新的http請求,並指定此請求的方法、URL以及驗證信息(用戶名/密碼)
            xmlHttp.onload = function(e) { 
                    if (xmlHttp.status == 200) { 
                    mythat.list = xmlHttp.response.pageInfo.list;//這裏是返回的數據的接收
                    //mythat.listLoading = false;
                } 
            };
            xmlHttp.send();//發送請求到http服務器並接收回應

以上代碼即可實現向後臺發送請求。xmlHttp還有很多的屬性,讀者可以自行了解,在進行設置循環調用即可實現數據的刷新。

在設置數據刷新的過程中還遇到了個小插曲,我在做這個功能的時候,因爲用的是nodejs,所以我引入了一個node的cron插件,版本是1.7.0,因爲這個插件的功能強大,可以寫我們熟悉的cron表達式,時間規則定義起來多樣化,可是在投屏的過程中發現,釘釘企業工作臺投屏也是不支持的,鬱悶至極,所以又改爲了常見的js的setInterval方式,時間規則沒有之前的多樣化了,但也滿足了需求。

希望我的經歷能夠幫助到你。附上我的成品,這是一個根據瀏覽器屏幕大小,自動調節充滿的程度,自動調節字體大小和背景顏色,比較基礎(後臺數據計算規則、排序規則和行鏈接卻很複雜),可能會在後續的文章中更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章