1. 程式人生 > >如何在HTML中的開啟本地App,並傳送引數到搜尋框搜尋

如何在HTML中的開啟本地App,並傳送引數到搜尋框搜尋

最近需求有一個關於在Html頁面中click每一行的資料,開啟本地的Golden Helix 的GenomeBrowse,並將該行的chrosome和position以“chr:start-end”的形式傳送至搜尋框並搜尋。

這個需求拿到手時首先想到的是通過程式碼去實現open app和搜尋,所以最初的實現是這樣的:
Html:

<a href="#" onclick="runApp()"></a>

js中:
<script>
    function runApp(){
        var shell = new ActiveXObject("WScript.shell"
); var app = "%localappdata%\\applicationPath\\appliaction.exe"; shell.Run(app); }
</script>

如上,這裡的限制條件有兩個:
一:必須用IE瀏覽器,因為只有microsoft才支援ActiveX,
二:IE瀏覽器需要設定:“Internet選項”—“安全”— “自定義級別”— 啟動“對未標記為可安全執行指令碼AX初始化並執行指令碼”

假如只是想通過IE瀏覽器顯示的html來操作開啟本地app,可以這樣做,但僅僅是打開了,如果想傳遞引數到app並執行(搜尋),這條路子繼續走下去我暫時沒想到怎麼走。

然後第二種路子的話只是適合我要開啟的app,GenomeBrowse。
很多app在開發的時候都會有api的,即使通過api的形式去訪問(開啟)並執行相關的操作,
比如我的這個app,“開啟以及傳入搜尋引數並執行查詢”的api為:
genomebrowse:/api/zoom?locus=chr1:476471220-47647338.

所以我在寫HTML時,每一行定義為:

<a href="genomebrowse:/api/zoom?locus=chr1:476471220-47647338">open and search</a>

就會開啟本地的app,並傳入引數執行查詢了

所以總結下來,假如你要在你的project的HTML操作開啟本地app並執行操作(我的是輸入引數並查詢),你先參考一下你的app是否有api訪問,直接在程式碼中呼叫它的api,就不用費盡心思地想完全用程式碼解決了