1. 程式人生 > >使用ActiveX控制元件開啟IE瀏覽器

使用ActiveX控制元件開啟IE瀏覽器

        事情是這樣的,客戶讓做一個單點登入的功能,但是另一個系統和我們公司的系統部署在同一個伺服器上,導致在同一個瀏覽器使用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誤殺。