防止網頁被嵌入框架的程式碼

阮一峰發表於2008-10-12

最近,國內開始流行另一種流氓行為:使用框架(Frame),將你的網頁嵌入它的網頁中。

比如,有一家網站號稱自己是"口碑聚合門戶",提供全國各個網上論壇的精華內容。但是,其實它就是用框架抓取他人的網頁,然後在上面加上自己的廣告和站標,這同盜版書商有何不同?!

不明內情的訪問者,只看到位址列是該門戶的URL,不知道真正內容部分的網頁,其實來自另一個網站。

為什麼我反對這種做法?

  1)它故意遮蔽了被嵌入網頁的網址,侵犯了原作者的著作權,以及訪問者的知情權;

  2)大量業者使用的是不可見框架,使得框架網頁與被嵌入的網頁視覺上完全相同,欺騙性極高;

  3)不良業者在被嵌入網頁的上方或周圍附加廣告(甚至病毒和木馬),不僅破壞原作者的設計意圖和形象,而且屬於侵權利用他人資源的謀利行為;

  4)如果訪問者在框架內部,從一個網頁點選到另一個網頁,瀏覽器的位址列是不變的,這是很差的使用者體驗,並且訪問者會將這種體驗歸咎於原網頁的作者。

如果確有必要,將他人的網頁嵌入自己的框架,那麼應該同時滿足以下三個條件:

  A. 在框架網頁的醒目位置,清楚地說明該網頁使用了框架技術,並明確列出原網頁的URL網址。

  B. 在框架網頁的醒目位置,向訪問者提供"移除框架"的功能。

  C. 不得附加任何廣告或惡意程式碼。

如果你經常使用Google的圖片搜尋,你就會知道,Google就是這樣做的。

當然,流氓業者不會理睬你的正當要求。所以,我寫了一段很簡單的javascript程式碼,大家只要將它放入網頁原始碼的頭部,那些流氓就沒有辦法使用你的網頁了。

<script type="text/javascript">

if (window!=top) // 判斷當前的window物件是否是top物件

top.location.href =window.location.href; // 如果不是,將top物件的網址自動導向被嵌入網頁的網址

</script>

UPDATE

2010.8.15

釋出升級版程式碼,使得除了本地域名以外,其他域名一律無法將你的網頁嵌入框架。

(完)

相關文章