無論是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。
注:
我正在製作的網站不會上網。我將在信息屏幕中使用它。 – Make82
我認爲這很難。我沒有我自己的網站或服務器。我不想阻止所有鏈接..只有通向其他地方的內容比內部網站中顯示的內容更多。 – Make82
我打算把這個html文檔放到firefox的全屏中。問題是你可以跳出這個文檔..我嘗試了firefox的diffirent「白名單」插件,但它不能解決問題。我想阻止該iframe內的所有外部鏈接。沒有像「家」,「約」等鏈接,因爲他們只是改變該網站內的iframe。外部鏈接打開新標籤..這是問題。我只想在該iframe中顯示網站內容。 – Make82