【转】window.open被浏览器拦截的解决方案

原文地址:http://zakwu.me/2015/03/03/dan-chu-chuang-kou-bei-liu-lan-qi-lan-jie-de-jie-jue-fang-an 现象 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,搞得人无比郁闷啊,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截。何况当出现拦截时,很多小白根本不知道发生了啥,不知道在哪里看被拦截的页面,简直悲催啊~~。 另外,可以发现,当window.open为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到ajax或者一段异步代码内部,马上就出现被拦截的表现了。 原因分析&深入研究 当浏览器检测到非用户操作产生的新弹出窗口,则会对其进行阻止。因为浏览器认为这不是一个用户希望看到的页面。 比如对js中直接执行的,

nodejs

使用Nexmo发送中文短信

最近公司的项目要发送短信通知,因为用户都是国际用户,因此国际短信是必不可少的,一开始打算选择国内的【云片】平台,但是签名不能是全英文有些尴尬,最终选择了【Nexmo】。 Nexmo发送短信的API还是非常简单的,一些语言也给出了详细的使用例子。这里copy一下nodejs的例子。 需要注意的是,如果发送的内容带有中文等字符,需要将type设置为unicode,不然的话收到的短信中这些字符会全部为问号。 var https = require('https'); var data = JSON.stringify({ api_key: 'API_KEY', api_secret: 'API_SECRET', to:

nodejs

ES6 + Express + Babel + Gulp + React + Webpack

自己动手才发现原来写篇好文章真的是太难了,如果评个等级的话,这篇文章大概是渣渣水平,哈哈。 不过,总算是写完了,也算是最近学习的一个总结吧 :) 本文目录 准备工作 项目目录结构 Express 安装 写个server测试一下 Babel 安装 配置.babelrc 使用es6语法编写代码 使用bebel转换 Gulp 安装 编写gulpfile 一个简单的gulpfile 能够监听文件更改的gulpfile React + Webpack 安装 webpack.config.js 在gulp中使用webpack 使用React 总结

linux

Linux用户相关操作

添加用户 useradd 选项 用户名 -c comment 指定一段注释性描述。 -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。 -g 用户组 指定用户所属的用户组。 -G 用户组,用户组 指定用户所属的附加组。 -s Shell文件 指定用户的登录Shell。 -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。 删除用户 userdel 选项 用户名 -f,

nodejs

Sails+wechat(解决sails无法处理微信消息)

sails框架使用wechat 的时候能够通过验证却不能处理微信消息,原因是sails默认的bodyPaser(skipper)不支持'text/xml'形式的请求(sails issues#2714) YunnuY同学使用pexpress-xml-bodyparser和body-parser覆盖了sails默认的bodyParser https://github.com/YunnuY/sweat/blob/master/config/http.js 由于body-paser后来更新,所以这里的代码要稍微修改一下,将var bodyParser = require('body-parser')();修改为var bodyParser = require('body-parser')().json(); 但是公司的项目中还有包含文件的请求,此时body-paser就不能满足需求了,

java

Java实现二叉查找树转为排序的双向链表

1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 /   \ 6     14 / \   /  \ 4   8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先我们定义的二元查找树节点的数据结构如下: struct BSTreeNode { int m_nValue; // value of node BSTreeNode *m_

jdbc

JDBC事务处理

在JDBC中,事务操作默认是自动提交。也就是说,一条对数据库的更新表达式代表一项事务操作。操作成功后,系统将自动调用commit()来提交,否则将调用rollback()来回退。 可以通过调用setAutoCommit(false)来禁止自动提交。之后就可以把多个数据库操作的表达式作为一个事务,在操作完成后调用commit()来进行整体提交。 倘若其中一个表达式操作失败,都不会执行到commit(),并且将产生响应的异常。此时就可以在异常捕获时调用rollback()进行回退。 这样做可以保持多次更新操作后,相关数据的一致性。 /* * 2014年12月30日16:24:04 */ Connection conn; Statement stat; ResultSet rs; try { Class.

java

Java中int和Integer的区别及如何相互转换

两周前参加了一场比试,笔试中有int和Integer相互转换的题,自己答的不是很有把握,不过没有及时查阅资料,后来就忘记了。 今天看笔试题的时候看到int和Integer的区别突然想到之前的那道题,查了下资料,现在把它记录下来。 Java中int和Integer的区别 int是Java提供的8种原始数据类型之一。Java为每个原始数据类型提供了封装类,Integer是Java为int提供的封装类。 int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。例如,要想表达出没有参加考试和考试成绩为0的区别,则只能用Integer。 另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数Integer.parseInt(String str),Integer中还定义了表示整数的最大值和最小值的常量。 int和Integer的互相转换 1.int转换为Integer 1) int a

linux

ubuntu英文环境下使用中文输入法

为了和小伙伴们一起dota2,下载了steam for linux,无奈中文环境下无法在steam上敲字,于是乎换到英文环境,字是能敲了,但是另外一个问题出现了,按ctrl+space无法调出中文输入法了 一通google&baidu之后,找到了解决方案 1.依次进入System Settings > Language Support > Install / Remove Languages… 弹出窗口中选择 Chinese 并且 Apply Changes (ps:我这里之前是中文环境,所以chinese已经安装了,所以这一步没有进行)

php

LNMP1.0配置php与jsp共存

最近更换了一个vps,新的vps当然需要重新配置环境了,之前用的vps死活弄不好php与jsp共存,一直是我心中的痛... 换了新的继续试一试能不能弄好,没想到一试真的配置好了,记录一下,以后没准还会用到。 安装lnmp之类的就不详细赘述了,都是很简单的操作,只简单说一下需要安装的有哪些东西,括号里是我本次安装的版本。 lnmp(1.0) /usr/local/nginx /usr/local/mysql /usr/local/php jdk(7u45) /usr/local/jdk/jdk1.7.0_45

virtualbox

win8下无法安装VirtualBox弹出系统找不到指定的路径

Windows 7/8用户在安装VirtualBox时弹出了Installation failed!Error:系统找不到指定的路径的错误提示,导致VirtualBox安装失败。 原因:主要是因为驱动的打包程序解压过程出错,应该是无法在中文用户名的系统配置中找到解压路径造成的。 解决办法: 1、单击开始菜单或者WIN+R,在搜索框输入CMD命令打开命令提示符窗口。 2、按住Shift键后右键单击VirtualBox文件选择“复制为路径”命令,接着,在命令提示符窗口右键单击选择“粘贴”命令。 3、在命令后添加-extract -path c:vbox,回车即可将安装文件解压到“C:vbox”文件夹了。注: