[IE8]如何開發自己網站的視覺化預覽的加速器(Accelerator)初體驗

當一個新的功能出來時,小喵不免會去開始想,這個功能小喵的系統應該怎麼應用上去。IE8裡面,除了加強了搜尋的功能,提供視覺化搜尋外,在IE8中還新增加了好東西,這東西叫做【加速器(Accelerator)】。這篇就來介紹如何開發自己網站,並且支援【預覽功能】的加速器...

緣起

當一個新的功能出來時,小喵不免會去開始想,這個功能小喵的系統應該怎麼應用上去。IE8裡面,除了加強了搜尋的功能,提供視覺化搜尋外,在IE8中還新增加了好東西,這東西叫做【加速器(Accelerator)】。這篇就來介紹如何開發自己網站,並且支援【預覽功能】的加速器...

預期結果

預期我們希望能夠讓使用者瀏覽任何網頁時,可以透過加速器來搜尋我們提供的相關資料,並且已使覺化的方式預覽。用描素的不如用看的,請看以下的影片。

什麼是加速器

加速器,看到名稱,小喵的第一印象,以為是開跑車時的,按下液態氮,然後車子就會衝出去一樣,或許是讓網頁可以更快的顯示的一個工具。但是測試了一下,好像不是想像中那樣,可以讓一般的瀏覽加快。不過如果把瀏覽網頁過程中,有個關鍵字,需要去查詢他的相關資料,在以往的方式,有以下這些步驟

  1. 選取關鍵字
  2. 複製
  3. 點搜尋列
  4. 貼上關鍵字
  5. 按下Enter
  6. 查看列出的相關訊息

再這樣個過程,需要這麼些步驟才能夠看到想要的資訊。而使用加速器的話,過程就會變成:

  1. 選取關鍵字
  2. 點選加速器開關
  3. 選擇要的加速器
  4. 直接看到相關的訊息

仔細看一下這個過程,如果把這些步驟比擬做開跑車在高速公路上,那麼使用加速器,確實會讓你在一瞬間,就衝出去(看到相關資訊)的感覺

準備工作

要測試使用加速器(Accelerator)在自己的網站,同樣的也是準備一個資料庫來當作資料查詢的來源。小喵利用上次測試【視覺化搜尋】相同的資料庫,這次用來撰寫看【視覺化預覽的加速器】要怎麼來開發。因此我們就用上次的專案,上次的資料庫來當作例子

 

開始撰寫

我們參考在點部落裡面【Dotjum】的【IE 8 Accelerator 加速器開發介紹 get 篇 (Activities)】,所以我們知道,要做出一個Preview的網頁,而且這個網頁,他的大小要限制在【320*240】的大小範圍裡面。撰寫這個東西比起寫視覺化搜尋簡單多了,上一次的視覺化搜尋,必須產生特定的xml內容。但是這次的加速器只需要撰寫一般的網頁就可以。小喵就用一個DIV,一個GridView來處理即可。相關的程式碼如下:

tAcceleratorPreview.aspx


    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
        DataSourceID="SqlDataSource1">
        <Columns>
            <asp:BoundField DataField="MODEL" HeaderText="MODEL" SortExpression="MODEL" />
            <asp:TemplateField HeaderText="Img" SortExpression="Img">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Img") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Image ID="Image1" runat="server" ImageUrl='<%# "images/" & Eval("Img") %>' Width="50px" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="Dsc" HeaderText="Dsc" ReadOnly="True"
                SortExpression="Dsc" />
        </Columns>

    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server"
        ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>"
        SelectCommand="SELECT [MODEL], [Img], [Url], Left([Description],10) + '...' AS Dsc FROM [T1] WHERE ([MODEL] LIKE '%' + @MODEL + '%')">
        <SelectParameters>
            <asp:QueryStringParameter Name="MODEL" QueryStringField="q" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>
</div>

 

這個寫法沒有什麼特別的,就是一般的ASP.NET的寫法,拉個GridView來顯示資料,不過由於畫面會限制在【320*240】這樣的大小。因此圖型的部分,小喵特別設定他的寬度,讓圖不要太大。另外使用DIV來限制展現的範圍,而且設定當超過這個範圍的話,DIV會自動使用Scroll來處理。讓使用者可以拉ScrollBar來處理。看不見的部分。不過您仔細看會發現,小喵寫的div比320*240還要小一些,那是因為一般網頁在上下左右都會有一點點的留白,所以為了讓Scroll能夠順利的出現,再多保留40px的空間。如果要去除上下左右保留的留白,可以在<BODY>上,增加如下的Style設定

加入視覺化加速器

接著,跟視覺化的搜尋一樣,要加入這個加速器,要有個xml檔案讓使用者來加入。該xml的檔案內容如下:

tAcceleratorPreview.aspx


<openServiceDescription
  xmlns="http://www.microsoft.com/schemas/openservicedescription/1.0">
    <homepageUrl>http://[your server_ip or server_name]/tVisualSearch/</homepageUrl>
    <display>
        <name>Topcat 示範 加速器</name>
        <icon>http://[your server_ip or server_name]/tVisualSearch/TOPCAT.ico</icon>
        <description>Topcat示範的加速器(含預覽)</description>
    </display>
    <activity category="share">
        <activityAction context="selection">
            <preview action="http://[your server_ip or server_name]/tVisualSearch/tAcceleratorPreview.aspx">
                <parameter name="q" value="{selection}" />
            </preview>
            <execute method="get" action="http://[your server_ip or server_name]/tVisualSearch/results.aspx" >
                <parameter name="q" value="{selection}" type="text" />
            </execute>
        </activityAction>
    </activity>
</openServiceDescription>

這邊重複【Dotjum】大大所說的,這個xml的結構中,【homepageUrl】這個設定了您的加速器所在的Domain,因此【activity】以下的【preview action】、【execute action】的網址都必須與【homepageUrl】相互呼應,這樣才能夠正確的運作。其他的部分從xml的Tag名稱大概都很容易猜出來該放哪些資料。而關鍵的【{selection}】代表您在往頁中,反白後想要透過加速器處理的部分。

最後一樣,加上一個超連結(或者按鈕),透過JavaScript來註冊這個xml。目前用到的視覺化搜尋與加速器,分別是

視覺化搜尋:window.external.AddSearchProvider('[YourXMLFile]')

加速器:window.external.addService('tAccelerator.xml')

 

後記

【加速器】的功能,操作上感覺起來比【視覺化搜尋】操作簡單。而且開發上,也更簡單(只需要一般的網頁,注意顯示大小)。所以大家可以構思,要為您自己的網站,增加哪些的【加速器】。

 

參考資料:

IE 8 Accelerator 加速器開發介紹 get 篇 (Activities)

 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat