Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止通过删除链接破坏iFrame_Javascript_Iframe_Drag And Drop_Node Webkit_Framebusting - Fatal编程技术网

Javascript 防止通过删除链接破坏iFrame

Javascript 防止通过删除链接破坏iFrame,javascript,iframe,drag-and-drop,node-webkit,framebusting,Javascript,Iframe,Drag And Drop,Node Webkit,Framebusting,我有一个页面嵌入了一个带有外部域的iFrame。所以我不能在它的DOM中插入任何东西。这个页面是用Node Webkit(基于Chr)运行的,但是因为这个行为对于任何浏览器都是一样的,所以我认为这是一个通用的JavaScript问题。 我想防止用户将链接“删除”到我的页面和iFrame中 对于我的页面,我可以嵌入一个监听特定事件的小JavaScript片段,例如“drop”或“dragend”: //防止将链接拖放到此应用程序中: 函数handleDragEvent(e){ e、 预防默认值()

我有一个页面嵌入了一个带有外部域的iFrame。所以我不能在它的DOM中插入任何东西。这个页面是用Node Webkit(基于Chr)运行的,但是因为这个行为对于任何浏览器都是一样的,所以我认为这是一个通用的JavaScript问题。 我想防止用户将链接“删除”到我的页面和iFrame中

对于我的页面,我可以嵌入一个监听特定事件的小JavaScript片段,例如“drop”或“dragend”:

//防止将链接拖放到此应用程序中:
函数handleDragEvent(e){
e、 预防默认值();
e、 停止传播();
返回false;
}
变量dragEvents=['dragend'、'drop'、'dragenter'、'dragleave'、'dragover'];
对于(变量i=0;i
到目前为止,一切正常:我的页面中的链接不会被导航到。从我的页面内部拖动到iFrame中的链接不会导航,但仍然可以拖动到外部浏览器窗口中(这可以通过“dragstart”阻止,但对我来说没关系)

但是,如果用户将外部浏览器中的链接直接放到iframe中,它会“劫持”整个窗口,而不仅仅是iframe。这就是我想要阻止的

我设置了一个小程序来演示这种奇怪的行为(使用Firefox和Chrome进行了测试)


问题:如果有人从外部窗口将链接放到iFrame中,我如何防止浏览器更改顶部位置?

我不知道您在普通浏览器或节点webkit中是否担心这一点

如果您询问有关节点webkit(现在称为nwjs)的信息,那么您是否尝试在iframe上使用
nwfaketop


我认为本页上的信息可能是您所关注的:

这里有一个与nw.js相关的问题:

改变iframe拖放行为的唯一可能性似乎是向加载的iframe添加事件侦听器(侦听“加载”事件)并覆盖默认行为,例如“dragover”事件:

// identify the iframe element
var frameElem = document.getElementById('main');

frameElem.contentWindow.addEventListener('dragover', function(e){
  e.preventDefault();
  e.stopPropagation();
}, false);

我在node webkit中对此很担心。“nwfaketop”对这个问题不起作用,因为它不是站点本身破坏框架(通过JS检测);这似乎是浏览器的标准行为(node webkit=chromium;或Firefox,Chrome等)。您是否找到了解决方案?
// identify the iframe element
var frameElem = document.getElementById('main');

frameElem.contentWindow.addEventListener('dragover', function(e){
  e.preventDefault();
  e.stopPropagation();
}, false);