V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
sampeng
V2EX  ›  JavaScript

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

  •  
  •   sampeng · 2012-12-22 00:06:56 +08:00 · 5589 次点击
    这是一个创建于 4346 天前的主题,其中的信息可能已经有所发展或是发生改变。
    就跳本域名下都不允许啊。。为毛啊。。。为毛啊。。。
    本机随便起个域名 sampeng.org,直接window.open("http://sampeng.org/")都不行。。尤其是IE9.。为啥优酷可以呢。。求教。。求教。。。想不明白了
    18 条回复    1970-01-01 08:00:00 +08:00
    GreatHan
        1
    GreatHan  
       2012-12-22 00:18:33 +08:00
    和域名没关系,window.open 如果是click调用可以打开,如果其他方式 会被浏览器阻止
    sampeng
        2
    sampeng  
    OP
       2012-12-22 00:21:11 +08:00
    @GreatHan 你的意思是必须放在click的调用事件里面?
    clowwindy
        3
    clowwindy  
       2012-12-22 00:52:57 +08:00   ❤️ 1
    大约 04 年的时候,淘宝刚出来的那会儿,弹窗广告打得特别猛,基本上任何中文网站,都会弹个淘宝网的窗口出来,用的就是 window.open()。

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

    我说的是自动弹,不是点击之类的操作弹。
    alexrezit
        9
    alexrezit  
       2012-12-23 00:27:03 +08:00   ❤️ 1
    @yeh 喵~ 好蛋疼~ 最蛋疼的是不用 flash 都无法访问 clipboard~
    j1anb1n
        10
    j1anb1n  
       2012-12-23 11:50:14 +08:00
    不仅是click可以,浏览器自身触发的事件的回调都可以,而且必须是直接回调,如果 你的回调里再setTimeout什么的就不可以了。
    gqlxj1987
        11
    gqlxj1987  
       2012-12-23 23:11:03 +08:00
    @alexrezit 同感,关键是flash很影响加载速度
    mudkip
        12
    mudkip  
       2012-12-23 23:55:31 +08:00
    @j1anb1n 是的,即使是click事件->Ajax->回调也不行,这个问题一直有些困扰...
    jjlovegrape
        13
    jjlovegrape  
       2012-12-24 11:17:06 +08:00
    @sampeng 放在submit在高版本的chrome和ff里面一样被禁止。 所有模拟用户click或者submit这种hacker的方法都可能会被禁止。
    建议:从交互上上改变,让用户主动触发。
    phpboy
        14
    phpboy  
       2012-12-25 11:44:55 +08:00
    你可以去一点垃圾网站体验他们的弹窗广告,就知道如何实现了。尤其是一些下载站。以前做广告联盟的时候浏览了不少这样的网站。
    jiangle
        15
    jiangle  
       2012-12-26 12:12:26 +08:00
    window.open被滥用了。。。
    sampeng
        16
    sampeng  
    OP
       2012-12-26 23:31:25 +08:00
    @jiangle 群众的智慧真是无穷的。。本意是好的。结果因为滥用而被封。。哎。。。。
    loveandfree
        17
    loveandfree  
       2012-12-27 12:25:54 +08:00
    弹的太多谁也受不了
    j1anb1n
        18
    j1anb1n  
       2012-12-29 13:01:31 +08:00
    @mudkip对哦,这样的话挺纠结的..不过可以考虑弹出层提示用户什么的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3647 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:19 · PVG 12:19 · LAX 20:19 · JFK 23:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.