2012-07-09 191 views
1

有沒有辦法阻止嵌入式iframe被點擊或使整個iframe可點擊?我希望iframe能夠提取數據,但我不希望訪問者能夠點擊iframe,並且只能從iframe上的一個位置重定向。阻止嵌入式iframe重定向

這可能嗎?這裏的iframe的一個例子:

<iframe src="http://www.indiegogo.com/project/157203/widget?escape=false" width="224px" height="429px" frameborder="0" scrolling="no"></iframe> 

http://jsfiddle.net/qX4fu/

+0

什麼是iframe的目的是什麼? – Joseph 2012-07-09 19:38:45

+2

你可能會在其上覆蓋一個div? – romo 2012-07-09 19:40:16

回答

2

當你的iframe顯然是由另一個域提供服務,不能使用標準的解決方案。 You can't read or modify the iframe nor its document

但你可以把一個看不見的股利過這樣的:http://jsfiddle.net/dystroy/Afg3K/

<div id=a></div> 

#a{ 
    position:fixed; 
    top:0; 
    left:0; 
    width:224px; 
    height:429px; 
}​ 

但大多數時候,這些事情都是由IFRAME列入合同禁止的。在你做之前先看看你的協議。

1

這是可能的,但我不會推薦它。

默認的瀏覽器行爲(如錨點標記點擊)通常會阻止用戶並阻止他們返回您的頁面。

此外,正如他的回答中所述,在頁面上放置iframe的合法字符串通常明確禁止這種行爲。

話雖這麼說,從事件處理程序返回false將防止瀏覽器接收事件:

document.getElementById('yourFrame').contentWindow.document.body.onclick = function() { 
    return false; 
}; 

值得一說的是,如果iframe是比其他域這將無法工作,其中腳本正在運行。如果是這樣的話,你需要構建一個透明的覆蓋div,它可以消除點擊事件並將其絕對定位在iframe上。

這裏是一個小提琴證明這兩種方法:http://jsfiddle.net/qX4fu/1/

1

如果您使用的是HTML5,我會建議您使用新的「沙箱」屬性,但它尚未與所有瀏覽器兼容。 http://www.w3schools.com/tags/att_iframe_sandbox.asp

在我來說,我只是說「讓表單」和「允許腳本」,爲沙箱屬性值和嵌入式站點不再重定向,仍然可以運行JavaScript

例如:​​

如果有人知道使用這種方法的缺點,我很想知道它。

別人用同樣的答案:https://stackoverflow.com/a/9880360/1404129(我就遇到了這個答案後)