好吧,我承認(rèn)這段事件做的工作是和前端的關(guān)系比較大,但其實(shí)最主要的功能是我們的合作方提供的一個(gè)ActiveX控件完成的,而我需要讓我的用戶(hù)在瀏覽器中調(diào)用這個(gè)控件。
ActiveX控件真的是很過(guò)時(shí)的技術(shù),但不得不承認(rèn)目前的用途還是比較多,因?yàn)橐陀布蚪坏,這方面我的知識(shí)比較欠缺,連搜索的關(guān)鍵詞都想不到。
這樣一來(lái),自然而言的就產(chǎn)生了一些限制。
用戶(hù)操作系統(tǒng)—— Windows
用戶(hù)客戶(hù)端—— Internet Explorer
操作系統(tǒng)注冊(cè)ActiveX控件
瀏覽器進(jìn)行相應(yīng)的安全設(shè)置
對(duì),我主要說(shuō)的就是這第四條,這里滿(mǎn)滿(mǎn)的槽點(diǎn)。
先說(shuō)解決方案 1. 將網(wǎng)址加入到“受信任的站點(diǎn)列表”中。這一步可以ActiveX控件在瀏覽器中加載并執(zhí)行,但它會(huì)在每次打開(kāi)的時(shí)候詢(xún)問(wèn)。 2. 選擇安全等級(jí)的自定義,選中“對(duì)未標(biāo)記為可安全執(zhí)行腳本的ActiveX控件初始化并執(zhí)行腳本”的“啟用”項(xiàng)。這一下就不需要詢(xún)問(wèn)了。
首先,當(dāng)沒(méi)有把網(wǎng)站加到“受信任的站點(diǎn)列表”時(shí),我能看到的結(jié)果就是功能無(wú)法執(zhí)行——問(wèn)題是如果代碼在我本地的硬盤(pán)里,直接右鍵用IE打開(kāi)是可以執(zhí)行的,而只要一放在服務(wù)器上就不行了。網(wǎng)上搜索一下,關(guān)于A(yíng)ctiveX的帖子很少,而在這很少的帖子里面有很多遇到這種問(wèn)題,但通常是自己寫(xiě)的控件出現(xiàn)的,我對(duì)Windows的這項(xiàng)技術(shù)完全沒(méi)有興趣,也就沒(méi)有去研究如何編寫(xiě)一個(gè)控件了。重點(diǎn)是帖子雖然并不少,但都是問(wèn)道最后也沒(méi)有個(gè)結(jié)果。終于找到一個(gè)說(shuō)到解決方案的,說(shuō)是要實(shí)現(xiàn)一個(gè)接口,我心想我這也不是.NET平臺(tái),難不成還用JS給你實(shí)現(xiàn)接口?肯定不 可能,最終終于讓我在一個(gè)犄角旮旯發(fā)現(xiàn)了這個(gè)問(wèn)題的答案——“受信任站點(diǎn)”,而且這個(gè)作者也強(qiáng)調(diào),如果不加入受信任站點(diǎn),即使在安全自定義里面開(kāi)啟了上面解決方案的第二步也是不起作用的。
對(duì),現(xiàn)在有了解決方案,但我不理解的是微軟為什么不彈出一個(gè)提示告訴我這是這個(gè)問(wèn)題引起的呢?
本地的代碼能執(zhí)行,放在遠(yuǎn)端的服務(wù)器上就不行,而我的服務(wù)器又是運(yùn)行Nginx的Linux服務(wù)器,我很難不把這個(gè)問(wèn)題聯(lián)想到平臺(tái)的不兼容上去,甚至想到了在Linux上安裝ActiveX控件——當(dāng)然這個(gè)不是我提出來(lái)的,很明顯不可能。或者服務(wù)器用Windows平臺(tái)的IIS,我甚至用這個(gè)方案在我本地也搭了一個(gè)IIS服務(wù)器,結(jié)果還是一樣的,只要是通過(guò)網(wǎng)絡(luò)協(xié)議訪(fǎng)問(wèn)就是不行。
最后我都已經(jīng)懷疑這個(gè)方案是不是有問(wèn)題,根本不可能實(shí)現(xiàn)時(shí),看到了這個(gè)帖子。當(dāng)時(shí)激動(dòng)的我差點(diǎn)喊出來(lái)。