使用ActiveX控制元件開啟IE瀏覽器
阿新 • • 發佈:2018-12-06
事情是這樣的,客戶讓做一個單點登入的功能,但是另一個系統和我們公司的系統部署在同一個伺服器上,導致在同一個瀏覽器使用JS原生程式碼window.open(url);開啟該瀏覽器的新標籤頁,會導致我們的系統登陸session被篡改(推測可能是同一個key吧,設計系統的人真是蛋疼,就不會加上公司縮寫嘛),導致被踢下線。
而經過測試,開啟其他瀏覽器單點登入後,就不會把本系統的登陸資訊登出,因為不同的瀏覽器的session就不一樣,當然cookie也是同理。
解決思路:
在本瀏覽器中開啟其他瀏覽器,因JS只能在瀏覽器中呼叫,所以只能使用ActiveX控制元件,但ActiveX控制元件只能在IE核心的瀏覽器中使用(畢竟是微軟親兒子),在谷歌瀏覽器不適用,蘋果的safari瀏覽器沒試過,應該也不行,因為ActiveX控制元件是呼叫windows系統的執行功能(win + R),這個要和客戶協商好。
解決方法:
話不多說,上程式碼:
<!DOCTYPE html> <html> <head> <title>使用ActiveX開啟其他瀏覽器</title> </head> <body> <button type="button" onclick="openIE();">開啟IE瀏覽器</button> <script type="text/javascript"> function openIE(){ var myShell = new ActiveXObject("wscript.shell"); var cmd = 'C:\\Program Files\\Internet Explorer\\iexplore.exe http://www.baidu.com'; prompt('cmd', cmd); myShell.exec(cmd); myShell = null; } </script> </body> </html>
// 最後說一下,這個HTML檔案容易被360誤殺。