为毛window.open限制这么严。。。

2012-12-22 00:06:56 +08:00
 sampeng
就跳本域名下都不允许啊。。为毛啊。。。为毛啊。。。
本机随便起个域名 sampeng.org,直接window.open("http://sampeng.org/")都不行。。尤其是IE9.。为啥优酷可以呢。。求教。。求教。。。想不明白了
5437 次点击
所在节点    JavaScript
18 条回复
GreatHan
2012-12-22 00:18:33 +08:00
和域名没关系,window.open 如果是click调用可以打开,如果其他方式 会被浏览器阻止
sampeng
2012-12-22 00:21:11 +08:00
@GreatHan 你的意思是必须放在click的调用事件里面?
clowwindy
2012-12-22 00:52:57 +08:00
大约 04 年的时候,淘宝刚出来的那会儿,弹窗广告打得特别猛,基本上任何中文网站,都会弹个淘宝网的窗口出来,用的就是 window.open()。

现在浏览器只允许 click 触发的 js 里执行 window.open,避免了这种恶意弹窗。而淘宝已经成了电商的老大。
sampeng
2012-12-22 01:05:16 +08:00
@clowwindy 然后就让我们这些程序员成sb了。。。死活要这个效果啊。。。只是一个正常的用户体验。。好吧。。仔细看了youku的代码。。完事。。放表单里面的onsubmit也是可以的。。
yeh
2012-12-22 01:22:39 +08:00
现在能完美各种浏览器下自动弹且不被拦截的,只有一种办法了。前提是装了flash。
alexrezit
2012-12-22 09:52:33 +08:00
@yeh 木有 Flash 的呢?
enj0y
2012-12-22 10:04:34 +08:00
给body 的click事件加个一次性弹窗的效果就OK了
yeh
2012-12-23 00:16:56 +08:00
@alexrezit 没有flash的话,答案很简单,不能,只有某些可以。

我说的是自动弹,不是点击之类的操作弹。
alexrezit
2012-12-23 00:27:03 +08:00
@yeh 喵~ 好蛋疼~ 最蛋疼的是不用 flash 都无法访问 clipboard~
j1anb1n
2012-12-23 11:50:14 +08:00
不仅是click可以,浏览器自身触发的事件的回调都可以,而且必须是直接回调,如果 你的回调里再setTimeout什么的就不可以了。
gqlxj1987
2012-12-23 23:11:03 +08:00
@alexrezit 同感,关键是flash很影响加载速度
mudkip
2012-12-23 23:55:31 +08:00
@j1anb1n 是的,即使是click事件->Ajax->回调也不行,这个问题一直有些困扰...
jjlovegrape
2012-12-24 11:17:06 +08:00
@sampeng 放在submit在高版本的chrome和ff里面一样被禁止。 所有模拟用户click或者submit这种hacker的方法都可能会被禁止。
建议:从交互上上改变,让用户主动触发。
phpboy
2012-12-25 11:44:55 +08:00
你可以去一点垃圾网站体验他们的弹窗广告,就知道如何实现了。尤其是一些下载站。以前做广告联盟的时候浏览了不少这样的网站。
jiangle
2012-12-26 12:12:26 +08:00
window.open被滥用了。。。
sampeng
2012-12-26 23:31:25 +08:00
@jiangle 群众的智慧真是无穷的。。本意是好的。结果因为滥用而被封。。哎。。。。
loveandfree
2012-12-27 12:25:54 +08:00
弹的太多谁也受不了
j1anb1n
2012-12-29 13:01:31 +08:00
@mudkip对哦,这样的话挺纠结的..不过可以考虑弹出层提示用户什么的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/55519

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX