公司e-Learning網站使用了PowerCam元件播放教學錄影,不知從IE9還是IE10起,開啟課程內容網頁,內嵌PowerCam ActiveX控制項的網頁無法自動下載安裝元件,會出現以下訊息:
One or more ActiveX controls could not be displayed because:
1) Your current security settings prohibit running ActiveX controls on this page, or
2) You have blocked a pubisher of one of the controls.
As a result, the page might not display correctly.無法顯示一個或多個 Active X 控制項,因為:
1) 您目前的安全性設定禁止在這個畫面執行 ActiveX 控制項,或者
2) 您已經封鎖其中一個控制項的發行者。
結果是畫面可能無法正常顯示。
直覺與IE安全設定,試過幾種設定組合,將網站加入受信任網站都無法解決問題。偵察過程發現PowerCam元件所在網頁採用showModalDialog開啟,打開F12開發者工具抓出網頁Url,改以IE直接開啟,忽然冒出安裝提示令人驚喜。下載安裝控制項後,教學影片順利播放,之後開啟該課程網頁就正常了。
換言之,關鍵在於Modal Dialog! 使用showModalDialog開啟內嵌ActiveX控制項網頁,瀏覽器拒絕執行ActiveX控制項;未變更任何IE安全設定,改成直接開啟該網頁,ActiveX控制項就能下載、安裝並正確執行;一旦安裝完成,用showModalDialog開啟也能正確執行ActiveX控制項。代表「Modal Dialog阻擋ActiveX控制項安裝,但不限制其執行」?
寫了兩個簡單網頁重現問題,在Test.html內嵌PowerCam播放器ActiveX控制項:
<html>
<body>
TEST:
<OBJECTID=player
CLASSID='CLSID:884C5B76-B154-45b5-A1ED-3746D0CCA352'
CODEBASE='http://download.powercam.com.tw/fsplayer6.cab#version=6,0,0,619'>
</OBJECT>
</body>
</html>
在另一個Host.html網頁以showModalDialog開啟Test.html:
function openModalDialog() {
window.showModalDialog("TEST.html", "diag", "width:300px;height:300px");
}
點擊按鈕開啟Modal Dialog後,確實可重現拒絕安裝ActiveX控制項的情境!
可惜的是,我找不到官方文件提到這項Modal Dialog對ActiveX控制項的額外限制,無從得知可否透過安全設定避免,改用IE直接開啟網頁安裝控制項這招看來可行,就當成Workaround吧!