2015-01-02 68 views
2

我正在製作一個網站,顯示iframe(跨域)中的另一個網站。問題是iframe中的網站中存在外部超鏈接,我想以某種方式阻止或禁用它們。我只想阻止外部超鏈接。如何在iframed頁面中阻止外部超鏈接?

也就是說,如果iframed網頁上是example.com/info

  • 塊:<a href="http://other_example.net/pwn">Bad Link</a>
  • 允許:<a href="http://example.com/donate">Good Link</a>

我怎樣才能做到這一點? Greasemonkey和某種腳本?或者是其他東西?

+0

我正在製作的網站不會上網。我將在信息屏幕中使用它。 – Make82

+0

我認爲這很難。我沒有我自己的網站或服務器。我不想阻止所有鏈接..只有通向其他地方的內容比內部網站中顯示的內容更多。 – Make82

+0

我打算把這個html文檔放到firefox的全屏中。問題是你可以跳出這個文檔..我嘗試了firefox的diffirent「白名單」插件,但它不能解決問題。我想阻止該iframe內的所有外部鏈接。沒有像「家」,「約」等鏈接,因爲他們只是改變該網站內的iframe。外部鏈接打開新標籤..這是問題。我只想在該iframe中顯示網站內容。 – Make82

回答

1

無論是userscript或瀏覽器擴展可以做到這一點。 Greasemonkey腳本將運行在頁面上,無論它是否在iframe中(除非你不告訴它)。
要阻止外部鏈接,請將每個鏈接的hostname與iframed頁面的hostname進行比較。

這裏有一個完整的的Greasemonkey腳本,說明了過程:

// ==UserScript== 
// @name  _Block cross-domain links 
// @include http://www.puppylinux.com/* 
// @grant GM_addStyle 
// ==/UserScript== 

//-- Only run if the page is inside a frame or iframe: 
if (window.top !== window.self) { 
    var linkList = document.querySelectorAll ("a"); 

    Array.prototype.forEach.call (linkList, function (link) { 
     if (link.hostname !== location.hostname) { 
      //-- Block the link 
      link.href = "javascript:void(0)"; 
     } 
    }); 

    //-- Mark the links, so the user knows what's up. 
    GM_addStyle ("        \ 
     a[href='javascript:void(0)'] {   \ 
      white-space: nowrap;    \ 
      cursor: default;     \ 
     }          \ 
     a[href='javascript:void(0)']::after { \ 
      background: orange;     \ 
      content: 'X';      \ 
      display: inline-block;    \ 
      margin-left: 0.3ex;     \ 
      padding: 0 0.5ex;     \ 
     }          \ 
    "); 
} 


可以安裝並運行該腳本對this test page on jsFiddle

注:

+0

完美!謝謝! – Make82

+0

不客氣!樂意效勞! –

0

對於這一點,你必須使用Javascript功能您的網址href屬性比較如下

// this function will give host name 
function get_hostname(url) { 
    var m = url.match(/^http:\/\/[^/]+/); 
    return m ? m[0] : null; 
} 

    var hostName = get_hostname("http://example.com/path"); 

這將返回http://example.com/在你的榜樣輸出。

使用上述功能,你可以比較你的網址,如果它要與你的主機名mathch - 那麼你可以允許重定向的頁面,否則您可以顯示消息對外部鏈接

+1

您如何期望能夠攔截包含外部資源的iframe中的鏈接激活? –

+1

我不知道如何使用這個。就像我說的,我不熟悉腳本。我不相信這會解決問題。 – Make82