4.内嵌 IE 方案
4.1 纯 ppapi 的局限
硕正组件的功能中,有二个功能在 ppapi 插件环境下是无法实现:4.2 何为内嵌 IE
如果您的 B/S 应用必须要使用上述的这二个功能, 您可以选择使用另一个方案:内嵌 IE 内核.4.3 实现细节
硕正官网的在线演示是双工的, “纯 ppapi” 模式 和 “内嵌 IE” 模式都支持, 在顶部备有下拉选择, 可以随时切换运行模式.#65#function navCur() { ..//略 #75# var url = 't' + (cur+1) + '.htm?107'; //所谓 “内部页面” 的 URL if($B.ppapi) { if(document.getElementById('ppapiMode').value == "ie") url = 'ppapi-ie.htm?' + url; //下拉选择 纯ppapi模式 或 内嵌IE模式 } window.parent.document.getElementById('ContentPage').src = url; //打开演示页 }上面第 76、77 行是关键, 如果当前浏览器是 IE 或 npapi, 就不需要 “外部页面” 了,直接打开最终的 “内部页面” ; 否则就根据 <select> 下拉的选择, 如果您是选择了内嵌 IE, 则打开 “外部页面” , 并把 “内部页面” 的 URL 传递给它, 让它去处理.
<html> <head> <meta http-equiv="content-type" content="text/html; charset=GB2312"> <script language="JavaScript"> //该句相当于是 jquery 的 $(document).ready document.addEventListener("DOMContentLoaded", addListener, false); //为 pp 对象添加侦听 function addListener() { pp.addEventListener('message', handleMessage, false); } //ppapi对象的事件侦听 function handleMessage(message) { if(message.data.name == "OnReady") { //URL拼装,比如把 "http://localhost/ppapi.htm?report1.htm" 转换成为 "http://localhost/report1.htm" var search = window.location.search; var url = window.location.href; url = url.substr(0, url.length - search.length); var n = url.lastIndexOf('/'); if(n > 0) url = url.substr(0, n + 1); url += search.substr(1); //main: 插件的IE内核打开页面 pp.postMessage( {func: 'Goto', para: url } ); } } </script> </head> <body leftMargin="0" topMargin="0" rightMargin="0" bottomMargin="0" scroll=no style="overflow:hidden"> <object id="pp" type="application/x-ppapi-supcan" Core="IE" isSilent="false" width="100%" height="100%"> 插件加载失败, 原因可能为:<br> 1.硕正 ppapi 插件未正确安装;<br> 2.当前 Chrome 不支持 ppapi, 请用高版本的 Chrome 浏览器 </object> </body> </html>页面不复杂, 有几处需要说明一下.