2011-03-17 28 views
0

您好再次StackOverflow的社区:什么是在Javascript方面新的空白窗口和弹出的区别

我需要防止我的网站从传统的弹出窗口(被打开,由于一些预防欺诈的问题,因为该网站是一个广告网络,通过在弹出窗口中自动加载广告可以实现欺诈行为)。通过弹出式窗口,我的意思是小的浮动窗口打开,如:window.open(URL, name, options)。起初我被检查为window.opener属性,如:

if (window.opener !== null && window.opener !== undefined) {
window.self.close();
}

但是,显然关闭一个正常空白窗口(从target='_blank'),因此网站无法在Facebook或Twitter,其中外部共享链接加载在一个空白窗口中。 有没有办法知道一个新窗口具体是一个弹出窗口。我在想这样做上面的代码,但检查中常用的弹出窗口关闭属性,如工具栏,状态栏的,等等。例如:

if (window.toolbar.visible !== true && other window properties are checked) {
window.self.close();
}

是这种做法对吗?还有哪些其他想法可以使用? 非常感谢您的时间。

+0

我想如果你真的只想让你的域访问页面,那么为什么不给只访问你的服务器执行该页面/弹出窗口。当然,在一个结构控制里面......类似于:如果这是popup,那么执行验证---它是我的服务器吗?如果是的话,否则执行拒绝! – B4NZ41 2011-03-17 19:32:56

+0

@Fernando Costa:这不是限制只能从我的域名访问的问题;实际上,我想从很多地方访问该网站。关键在于防止欺诈,因为该网站是一个广告网络,欺诈可以通过在_popup_窗口中快速自动加载广告来实现,该窗口甚至可以足够小。对不起,如果我不清楚这个问题的性质,我非常感谢你的回应。 – YOMorales 2011-03-17 19:48:33

回答

1

如果你问我,这是一个傻瓜的差事。

  • 不可能剔除误报
  • 大多数浏览器不听从window.close()如果揭幕战是从不同的域,如果JavaScript是禁用
  • 会失败
+0

不一定是傻瓜的差事。两件事情:1)如果JavaScript被禁用,那么人们怎么能通过Javascript打开一个弹出窗口。 2)从不同的域打开时,至少Firefox和Chrome会遵守window.close();这就是为什么我在发布Facebook,Twitter和其他网站的链接时遇到麻烦。 – YOMorales 2011-03-17 19:42:24