溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何在Vue中引入ActiveX控件

發(fā)布時間:2021-05-10 16:26:14 來源:億速云 閱讀:952 作者:Leah 欄目:web開發(fā)

本篇文章為大家展示了如何在Vue中引入ActiveX控件,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Vue的優(yōu)點

Vue具體輕量級框架、簡單易學、雙向數(shù)據(jù)綁定、組件化、數(shù)據(jù)和結(jié)構(gòu)的分離、虛擬DOM、運行速度快等優(yōu)勢,Vue中頁面使用的是局部刷新,不用每次跳轉(zhuǎn)頁面都要請求所有數(shù)據(jù)和dom,可以大大提升訪問速度和用戶體驗。

1.如何將ActiveX控件引入Vue,并且在頁面上成功渲染;

2.如何調(diào)用ActiveX已提供的方法;

3.如何監(jiān)聽ActiveX的動作;

(注:以上問題在html的文件里不存在)

我們先來看下第一個問題:如何將ActiveX控件引入Vue,并且在頁面上成功渲染。如何將ActiveX控件渲染到頁面上。根據(jù)客戶開發(fā)人員提供的demo,`<object id="" classid=""></object>`拷貝到vue文件中,如圖所示

如何在Vue中引入ActiveX控件

yarn run dev,運行成功,但是頁面空出很大一塊空白區(qū)域,很顯然,沒有渲染成功。經(jīng)過查詢,ActiveX控件只支持在IE瀏覽器下使用(有點坑)

這算是解決了第一個問題,同樣,小伙伴可以通過動態(tài)生成的方式渲染到頁面上,代碼如下:

let obj = document.createElement('object')
obj.setAttribute('id', 'activex')
obj.setAttribute('classid', 'clsid:{控件id}')
obj.setAttribute('width', 1500)
obj.setAttribute('height', 100)
var _obj = document.getElementById("要渲染的節(jié)點");
_obj.appendChild(obj)

接下來我們來看第二個問題:如何調(diào)用ActiveX已提供的方法。

渲染是可以了,但是卻無法調(diào)用控件提供的方法。根據(jù)demo:`softphonecontrol.MakeCall(paramsItem)`,無法執(zhí)行,后來又采取嵌入iframe方式(還記得剛剛說的嗎,這個控件在單純的html頁面沒有任何問題,當然前提是IE瀏覽器)。最終找到原因,IE的瀏覽器需要做下設(shè)置設(shè)置:設(shè)置-Internet選項-安全/自定義級別-Active控件和插件-對未標記為可安全執(zhí)行腳本的ActiveX控件初始化并執(zhí)行腳本,選擇"啟用"或者"提示")

最后一個問題啦:如何監(jiān)聽ActiveX的動作。

根據(jù)demo:

<script  for= "softphonecontrol"  event= "OnLogRingUp(param1,param2)"  language= "javascript"> 
 alert("param1:"+param1+" "+"param2:"+param2); 
</script>

再次提醒一下,這種寫法也只有IE支持,谷歌支持一些簡單的window.reload、onclick之類的方法,<script></script>中間的alert就是監(jiān)聽后續(xù)需要做的事情。我將這段代碼直接拷貝到vue文件里:

如何在Vue中引入ActiveX控件

哈哈,成功編譯,但是無法監(jiān)聽到。換個思路,動態(tài)渲染到根節(jié)點呢,像上面提到的:

 initRingUpSript:function(){
    var ring = document.createElement("script");
    ring.setAttribute("for","softphonecontrol");
    ring.event="OnLogRingUp(Call_ID,CORP_CODE)"; 
    ring.appendChild(document.createTextNode("phoneListener.ringUp(Call_ID,CORP_CODE)"))
    document.body.appendChild(ring)
   },

值得注意的是:此方法會將<script>function</script>渲染到頁面上,但是想執(zhí)行Vue的methods的方法的話,還需要在mounted里加上一句代碼: window.phoneListener = this;

上述內(nèi)容就是如何在Vue中引入ActiveX控件,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI