外部ドメインを持つ iFrame を埋め込んだページがあります。そのため、その DOM には何も挿入できません。このページは Node-Webkit (Chromium ベース) で実行されていますが、この動作はどのブラウザーでも同じであるため、これは一般的な JavaScript の問題であると考えています。
ユーザーが自分のページや iFrame に「リンクをドロップ」しないようにしたい。
私のページでは、「drop」や「dragend」などの特定のイベントをリッスンする小さな JavaScript スニペットを埋め込むことができます。
// prevent dragging & dropping links into this application:
function handleDragEvent(e) {
e.preventDefault();
e.stopPropagation();
return false;
}
var dragEvents = ['dragend', 'drop', 'dragenter', 'dragleave', 'dragover'];
for (var i = 0; i < dragEvents.length; i++) {
window.removeEventListener(dragEvents[i], handleDragEvent);
window.addEventListener(dragEvents[i], handleDragEvent);
}
これまでのところ、すべて正常に動作しています。私のページにドロップされたリンクはナビゲートされません。ページ内から iFrame にドラッグされたリンクはナビゲートされませんが、外部ブラウザ ウィンドウにドラッグすることはできます (これは「ドラッグ スタート」で防ぐことができますが、私にとっては問題ありません)。
しかし、ユーザーが外部ブラウザから iframe に直接リンクをドロップすると、iframe だけでなく、ウィンドウ全体が「ハイジャック」されます。それは私が防ぎたいものです。
この奇妙な動作を示す小さなjsfiddleをセットアップしました(Firefox と Chrome でテスト済み)。
質問:誰かが外部ウィンドウから iFrame にリンクをドロップした場合、ブラウザーがトップの場所を変更しないようにするにはどうすればよいですか?