1

埋め込まれた iframe をクリックできないようにする方法や、iframe 全体をクリックできるようにする方法はありますか? iframe でデータを取得したいのですが、訪問者が iframe をクリックして、iframe の 1 つの場所からのみリダイレクトされるようにしたくありません。

それは可能ですか?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/

4

3 に答える 3

2

iframe は明らかに別のドメインによって提供されているため、標準的なソリューションは使用できません。iframe とそのドキュメントを読み取ったり、変更したりすることはできません

しかし、次のように目に見えない div を置くことができます: http://jsfiddle.net/dystroy/Afg3K/

<div id=a></div>

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

しかし、ほとんどの場合、これらは iframe 包含契約によって禁止されています。それを行う前に、あなたの同意書を見てください。

于 2012-07-09T19:45:26.550 に答える
1

可能ですが、お勧めしません。

アンカー タグのクリックなどのデフォルトのブラウザー動作をいじると、通常、ユーザーはイライラし、ページに戻ることができなくなります。

さらに、dystroy が彼の回答で述べたように、ページに iframe をドロップすることに付随する法的文字列は、通常、この種の動作を明示的に禁止しています。

falseそうは言っても、イベント ハンドラーから戻ると、ブラウザーはイベントを受信できなくなります。

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

iframe がスクリプトの実行元とは異なるドメインにある場合、これは機能しないことに注意してください。その場合は、クリック イベントを飲み込み、iframe の上に完全に配置する透明なオーバーレイ div を作成する必要があります。

両方のアプローチを示すフィドルを次に示します: http://jsfiddle.net/qX4fu/1/

于 2012-07-09T19:43:12.383 に答える
1

HTML5 を使用している場合は、新しい「サンドボックス」プロパティを使用することをお勧めしますが、まだすべてのブラウザと互換性があるわけではありません。http://www.w3schools.com/tags/att_iframe_sandbox.asp

私の場合、サンドボックスのプロパティ値として「allow-forms」と「allow-scripts」を追加しただけで、埋め込みサイトはリダイレクトされなくなり、引き続き JavaScript を実行できます

元:<iframe sandbox="allow-forms allow-scripts" ... /></iframe>

誰かがこのアプローチを使用することの短所を知っているなら、私はそれについて知りたい.

同じ答えを持つ他の誰か:https ://stackoverflow.com/a/9880360/1404129 (後でこの答えに出くわしました)

于 2013-01-28T23:04:56.317 に答える