我有一个嵌入了带有外部域的 iFrame 的页面。所以我不能在它的 DOM 中插入任何东西。该页面使用 Node-Webkit(基于 Chromium)运行,但由于此行为对于任何浏览器都是相同的,因此我认为这是一个普遍的 JavaScript 问题。
我想防止用户将链接“拖放”到我的页面和 iFrame 中。
对于我的页面,我可以嵌入一个小的 JavaScript 片段来监听特定事件,例如“drop”或“dragend”:
// 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 的链接无法导航,但仍然可以拖入外部浏览器窗口(可以使用“dragstart”阻止,但对我来说没关系)。
但是,如果用户将来自外部浏览器的链接直接放到 iframe 中,它会“劫持”整个窗口——而不仅仅是 iframe。这就是我想要阻止的。
我设置了一个小jsfiddle来演示这种奇怪的行为(用 Firefox 和 Chrome 测试)。
问题:如果有人从外部窗口将链接放入 iFrame,我如何防止浏览器更改顶部位置?