<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [轉]淺談瀏覽器插件檢測 和自定義協議的支持

      前一陣子一直在折騰瀏覽器的插件檢測和自定義協議的支持。

      經過種種痛苦的折騰,算是對這一領域有了點淺顯的認知。特此記錄一下

       

      一、背景知識

      自定義協議:常用的協議有 http:// https://  ftp:// 等

      然而我們也經常會遇到類似這樣的協議連接  
      thunder://  迅雷的

      item://  itunes的

      ed2k:// 電驢的

      這樣的協議是需要本地計算機安裝軟件與之接應, 實現相應操作的

      也就是當你點一個類似的連接,瀏覽器會通知系統以何種程序處理該種協議的連接,這種對應是通過注冊表來實現的

      參考資料:http://www.rzrgm.cn/Aricc/archive/2009/03/18/1415929.html 

       

      二、實現方案

      要定義一個自定義協議,首先需要你有一款程序與之對應,

      也就是說這個協議得有軟件去處理,一般會是下載操作。

      而自定義協議連接最終是顯示在網頁上的,最終這是網頁與本地程序之間的交互。

      而之間的橋梁就是瀏覽器。

      那么要支持一個自定義協議,還需要去檢測本地是否有支持該協議的處理程序。

      這個能力的檢測是要通過檢測瀏覽器的插件來判斷的。

      也就是 裝軟件的時候同時給瀏覽器增加插件,以便標示系統有能力支持協議。

      畫一個流程圖:

      發布軟件 和自定義協議——》安裝軟件同時給瀏覽器安裝插件———》用腳本檢測瀏覽器插件以判斷支持情況————》點擊自定義協議連接調用本地程序處理

       

      三、插件檢測

      IE 可以通過嘗試 new ActiveXObject(axname); 操作是否成功來判斷插件存在情況

              var a = false;
              try {
                      var obj = new ActiveXObject(axname);
                      a = true;
              } catch (e) {
                      a = false;    
              };
              return a;

      IE的另一種方法是  預先埋設一個 object 并查看該object的屬性或者方法來判斷本地是否有能力支持

      比如apple itunes的object為: <object classID="CLSID:D719897A-B07A-4C0C-AEA9-9B663A28DFCB" width="1" height="1" id="iTunesDetectorIE" ></object>

      Firefox Chrome 等瀏覽器可以通過遍歷其plugin 查看pluginName是否符合來判斷插件存在情況

              var a = false;
              if(navigator.plugins && navigator.plugins.length > 0) {
                      for(var b = 0; b < navigator.plugins.length; b++) {
                              var c = navigator.plugins[b];
                              var d = c.name;
                              if(new RegExp(plugname,'i').test(d)) {
                                      a = true
                              }
                      }
              }
              return a

      另一種方法是 通過mimetype 做判斷

              try {
                      var mimetype = navigator.mimeTypes["application/"+plugname];
                      if(mimetype){
                              a = true;
                      }else{
                              a = false;
                      }
              }
              catch (e) {
                      a = false;
              }
              return a;

       

      四、存在的問題

      IE操作activeX控件的時候 瀏覽器可能會出現小黃條提示 這可能跟你的瀏覽器設置相關,會有安全提示,這是無法避免的

      也不要企圖捕獲小黃條出現的事件,這是安全提示,除非用戶主動操作,其他手段無法干預

      當你的插件在不同的域名下運行時,會重復提示,只有用戶允許在該域名下運行時,提示才會消失。

      當然如果你肯花錢,你可以做成 itunes的插件那樣的,默認在任何域名下運行

       要獲取這個權限需要跟微軟談,這是BD的事兒,不是RD的事兒。

      當PM們說為何同樣的代碼蘋果能做到,而你為何做不到的時候,可以明確告訴他們, 這不是技術的事兒。

       

       五、具體應用的實現流程

      進入頁面,

      瀏覽器判斷

      不同瀏覽器的插件支持檢測

      cookie記錄檢測結果

      沒有插件————》預加載彈窗提示資源 

      監測專用協議連接的點擊情況

      根據插件支持檢測結果做相應操作

      有插件————》調用本地程序處理

      無插件(或者檢測不到)————》 彈窗提示安裝軟件

       

      六、關于強制調用

      如果不能確定本地有沒有相應程序支持,而強制將專用鏈接給瀏覽器處理會怎樣?

      Firefox Chrome 都有有好的提示界面,提示瀏覽器不知道采用何種程序處理該協議的鏈接

      IE 不同 版本會有不同表現,這跟它們的安全級別相關。

      首先所有的IE都會顯示一個丑陋的界面表示瀏覽器打不開這個鏈接 

      IE6的 安全性能最差,你可以用一個隱藏的iframe 來調用這個專用鏈接,而不會看到報錯信息,運氣好的話你可以

      調起本地程序

      IE7 8 9 則提升了安全性能,如果用隱藏的iframe來調用不識別的鏈接時,無論嵌套幾層,總會立即反映到最頂層

      顯示無法打開該鏈接,意在通知用戶你在調用一個不識別的協議,可能會危害你的計算機安全。

      IE9 第一次會報錯,顯示無法打開,而再次點擊則不會重復顯示無法打開的頁面。

       

      七、具體項目應用和代碼實現

      http://zhushou.360.cn/script/360mobilemgrdownload.js

       示例地址:

       http://zhushou.360.cn/

       

      注:原文為http://www.rzrgm.cn/trance/archive/2012/05/16/2503663.html

      posted @ 2013-05-17 12:17  artwl  閱讀(3067)  評論(0)    收藏  舉報

      個人簡介

      var ME = {
      	"name": "土豆/Artwl",
      	"job": "coding",
      	"languages": [
      		"JS", "HTML",
                      "CSS", "jQuery"
      		"MVC",".NET",
      		"設計模式"
      	],
      	"hobby": [
      		"閱讀", "旅游",
      		"音樂", "電影"
      	]
      }
      
      TOP
      主站蜘蛛池模板: 亚洲国产高清在线观看视频| 国产99在线 | 免费| 视频一区视频二区亚洲视频| 亚洲天堂av 在线| 色猫咪av在线网址| 日本不卡码一区二区三区| 亚洲不卡一区三区三区四| 婷婷六月色| 中文字幕日韩国产精品| 91亚洲国产成人久久精| 中文字幕午夜福利片午夜福利片97| 人妻少妇无码精品专区| 国产精品无遮挡猛进猛出| 国产情侣激情在线对白| 中文字幕人妻不卡精品| 国产精品午夜福利在线观看| 97久久久亚洲综合久久| 中文字幕人妻不卡精品| 国产成人高清亚洲综合| 在线观看国产区亚洲一区| www久久只有这里有精品| 99国产精品永久免费视频| 亚洲日本VA中文字幕在线| 五河县| 91热在线精品国产一区| 国产成人精彩在线视频| 国产成人综合在线女婷五月99播放| 国产超碰人人做人人爰| 精品国精品国自产在国产| 国产免费高清69式视频在线观看| 久久婷婷大香萑太香蕉AV人| 91亚洲一线产区二线产区| 亚洲精品无码高潮喷水A| 人人人澡人人肉久久精品| 粉嫩av国产一区二区三区| 亚洲精品一区久久久久一品av| AV最新高清无码专区| 免费看的日韩精品黄色片| 国产区二区三区在线观看| 免费人成网站免费看视频| 亚洲av综合久久成人网|