您是否注意到一些網站曾強行闖入您的視線?是的,本文要討論的就是這類站點。當您在頁面之間導航時,這類站點會悄悄打開其它瀏覽器窗口。通常情況下,這些意外的窗口僅顯示一些在線廣告之類的無用內容。這些窗口通常稱為彈出式窗口,一般是通過頁面的腳本調用 window.open 方法來實現。(有關詳細信息,請參見 open 方法(英文)。)盡管 window.open 方法有時會給人帶來一些煩惱,但是如果使用得當,完全可以通過該方法構建功能強大的應用程序。 Internet Explorer 開發(fā)小組經常收到有關希望禁止彈出式窗口出現的用戶請求。這使他們面臨兩難的選擇:是允許開發(fā)人員自由使用這一孕育巨大潛能的工具為客戶提供完美的解決方案,還是應該對平臺進行限制以使開發(fā)人員不致于濫用這一功能?Internet Explorer 小組的最終意見是:除了導致安全隱患的情況之外,應盡可能允許開發(fā)人員靈活使用這一工具來構建功能強大的應用程序,而不要強加一些不適當的限制。 下面我想說明一下為什么彈出式窗口功能是必不可少的,還將就站點如何留住訪問者(或至少消除他們的不滿情緒)提出一些建議。 必不可少的彈出功能 顯示其它窗口的功能非常有用,它能使用戶在保留上下文的情況下查看相關的內容,這一功能在 Web 的很多地方都得到了利用。用戶通常很難意識到自己使用了另一個窗口,他們在執(zhí)行任務的過程中非常自然地就打開了這個窗口。 MSDN 使用 Internet Explorer 提供的在線參考資料就是成功使用 window.open 功能的一個示例。在瀏覽器中打開 onblur 事件(英文)網頁。如果向下滾動,將會看到一段示例代碼和“Show Me”按鈕,單擊此按鈕就可以看到示例代碼的效果。單擊此按鈕后,示例代碼的運行結果將顯示在一個單獨的新窗口中。在這種情況下,彈出功能是必不可少的,因為它為用戶保留了上下文,使用戶能同時查看示例和引用的頁面。 如果瀏覽器限制 window.open 功能,當前 Web 上的很多站點就無法正常工作。盡管我們不關心那些僅僅創(chuàng)建彈出式廣告的站點是否崩潰,但是很多合理使用這一功能的站點也會遭殃。 使用不當的情況 我們來看一下濫用這一功能的情況,我故意提到了“淫穢”一詞,因為濫用這一功能通常都與淫穢站點有關。我將以下現象稱為“俘獲用戶”:每當您單擊到另一頁面的鏈接時,或嘗試關閉瀏覽器窗口時,該頁面的一些腳本將俘獲這一事件,然后強行打開另一個瀏覽器窗口。似乎色情站點使用這一技術的頻率最高。 這種情況最令人惱火。特別是當您在 Web 上無意之中進行了一次搜索,意外地闖入這類站點時更是如此。設想一下突然發(fā)現自己不知不覺打開了五個或六個窗口,每個窗口充斥著淫穢的圖像時,您有什么樣的感受;更糟的是,當您試圖關閉其中一個窗口時,反而彈出了另外兩個類似的窗口!這不僅令人惱火,簡直是對人的無理侵犯。無辜的用戶要想逃離這源源不斷的圖像流,唯一的方法就是使用計算機上的“重置”按鈕。 這類站點之所以這樣做,無非是為了引誘用戶去瀏覽從而增加廣告收入,因此它們不大可能聽取我提出的有關如何合理使用彈出功能的建議。盡管如此,我還是要呼吁這類站點不要玩俘獲用戶的把戲,重新為自己的內容確定等級(請參見為 Internet 內容劃分等級(英文)),以使用戶能正確設置瀏覽器,避開這類站點。 合理使用的情況 以下我總結了合理使用這一技術應注意的幾個問題。如何使用這一功能,最后的決定權在您。但是請記住,如果濫用了這一技術,就會激怒訪問您站點的用戶,他們很可能就再也不會訪問它了。 1. 仔細考慮站點面向的用戶群。他們是否真正理解多個窗口的概念? 本專欄的讀者當然了解如何同時運行多個應用程序以及如何在它們之間切換。但是,也要考慮缺乏經驗的計算機用戶的處境,對他們來說,管理多個窗口可能是一項艱巨的任務。如果希望毫無經驗的用戶經常訪問您的站點,那么在單個窗口中提供站點的整個用戶界面可能更合適,這樣用戶就不會丟失上下文,也不會對窗口切換感到無所適從。 2. 直接響應用戶操作時只打開一個新窗口,并考慮如何使用戶明確這一點,即他們的操作將打開一個獨立窗口。 在我看來,最令人惱火的事之一就是:計算機程序在用戶沒有執(zhí)行任何操作的情況下就打開一個新窗口。如果您使用 window.open 只是為了直接響應用戶操作,則用戶就會將該操作與結果聯系起來。如果在用戶操作與結果之間存在較長的延遲時間,則用戶很難會想到這兩者之間存在的聯系。 3. 如果只是為了顯示一個廣告,請不要使用彈出功能。 如果廣告不是用戶訪問的主站點的一部分,將不可能真正引起用戶的關注。 4. 不要在您的站點上玩俘獲用戶的把戲。 當用戶離開您的站點時應及時提示用戶,詢問他們是否希望保存特定狀態(tài)。用打開另一個窗口來俘獲用戶是十分無禮的,很難吸引用戶再次光臨您的站點。 使用動態(tài) HTML 代替彈出式窗口 動態(tài) HTML 的功能非常強大,可以構建出靈活的應用程序。幾年以前,整個 Web 都是靜態(tài)的;每當用戶單擊某個鏈接時,服務器都會給他發(fā)送全新的頁面。隨著 Java、插件和 ActiveX 控件的引入,大大提高了用戶交互性,但是它們不能與頁面的 HTML 內容很好地集成。Microsoft 在 Internet Explorer 4.0 中首次加入動態(tài)內容支持功能,這一功能在 5.0、5.5 中不斷得到加強。在現在的 6.0 預發(fā)布版中,提供了一系列更加豐富的功能。 有了這些功能后,就可以將所有用戶界面納入一個瀏覽器窗口中,使用戶感到自己正在運行一個完整的應用程序。這里舉出一個我喜愛的示例,blox.com(英文)。這個公司提供一個在線電子表格和演示軟件,該軟件在 Internet Explorer 瀏覽器中運行,不需要安裝任何其它組件。該解決方案僅限于使用 Internet Explorer 來訪問此站點和運行應用程序。盡管如此,它還是表明借助動態(tài) HTML 完全可以獲得豐富的 Web 體驗,而不必使用給人帶來煩惱的附加窗口。 有一種技術可以將獨立內容作為頁面的一部分來提供,這就是“內部幀”,即通常所說的 IFrame(由于使用了 <IFRAME> 標記)。IFrame 使得獨立的 HTML 文檔可顯示為父文檔的一部分。(請參見 IFRAME 元素 | iframe 對象(英文)。) 現在 Netscape 6 已支持該功能,而 Internet Explorer 從版本 3 開始就支持該功能了,因此這一技術在 Web 上的應用將會越來越廣泛。使用這一方法后,就能避免與幀集有關的開銷和布局限制,更有效地管理站點上的內容。 要避免使用多個瀏覽器窗口,也可以在用戶的瀏覽器窗口上下文中使用 HTML 對話框與用戶交互。請參見“好的對話框的重要性”(英文)一文,這篇文章是我去年寫的,其中涉及到這方面的內容。 最后提示 由于本專欄是圍繞新窗口展開論述的,因此在本文即將結束之際,我想提醒 Internet Explorer 超級用戶對可能被忽略的一個問題加以注意。當您單擊以電子郵件方式發(fā)送給您的超級鏈接時,可能會發(fā)現引用的頁面顯示在已打開的瀏覽器窗口中。這種行為的原因只是為了最有效地使用您計算機的資源。盡管如此,我們也認識到對于超級用戶來說,可能并不希望這樣做。因此,您可以選擇是否希望總打開新的瀏覽器窗口。 要做到這點,請轉到“工具”菜單,選擇“Internet 選項...”對話框。在“高級”選項卡下,確?!爸匦率褂脝涌旖莘绞降拇翱凇边x項不被選中。由于我經常要打開多個瀏覽器窗口并鏈接到以電子郵件發(fā)送給我的超級鏈接,因此我沒有選中該選項。這樣我可以對打開的所有瀏覽器窗口進行更精確的控制。 |
聯系客服