在js中实现新窗口打开页面
我们都知道可以在html代码中使用<a href="xxxx" target="_blank"></a>这种方式来打开一个新的窗口打开一个页面,但是有很多时候,我们需要在某段js代码中去打开一个新的窗口实现页面跳转。有如下几种方法来实现这个功能。
1.Window.open()方法,比如如下代码,将打开baidu首页。
window.open("http://www.baidu.com")
但是这个方法是有问题的,那就是有些浏览器会拦截。所以我们需要第二种方法,也是本文主要介绍的方法。
2.模拟form表单提交来打开一个新的页面
它的主要思路就是动态构建一个隐藏的form表单,将其target设为“_blank”,然后在动态构建起表单参数,最后手动触发起click事件。
举个例子,我们要在一段js代码中打开http://www.baidu.com?a=1这个链接。我们可以用如下的代码来实现。
//js代码
var form='<form action="https://www.baidu.com" target="_blank" id="windowOpen" style="display:none">';
form+='<input name="a" value=1 />';
form+='</form>';
$('body').append(form);
$('#windowOpen').submit();
$('#windowOpen').remove();
当然,我们可以将上述代码封装成一个函数,函数传入两个参数,一个是url,另外一个是参数param,其中param是一个js对象。
function open_page(url, param) {
var form = '<form action="' + url + '" target="_blank" id="windowOpen" style="display:none">';
for(var key in param) {
form += '<input name="' + key + '" value="' + param[key] + '"/>';
}
form += '</form>';
$('body').append(form);
$('#windowOpen').submit();
$('#windowOpen').remove();
}
这样,我们就可以这样来调用函数了。
var url='https://www.baidu.com';
var param={a:1};
open_page(url,param);
甚至,我们可以将它封装成一个插件,以后我们就可以直接调用这个插件了。
//模拟form表单提交打开新的页面
$.extend({
open_page: function(url, param) {
var form = '<form action="' + url + '" target="_blank" id="windowOpen" style="display:none">';
for(var key in param) {
form += '<input name="' + key + '" value="' + param[key] + '"/>';
}
form += '</form>';
$('body').append(form);
$('#windowOpen').submit();
$('#windowOpen').remove();
}
});
调用方法如下:
var url='https://www.baidu.com';
var param={a:1};
$.open_page(url,param);
PS:需要注意的是,如果是在ajax回调函数中调用上述方法,需要将async设置为false,否则浏览器还是会拦截上述弹窗。
在js中实现新窗口打开页面的更多相关文章
- 如何在Flash中新窗口打开页面而不被拦截
Flash的wmode必须是opaque或者transparent,允许Flash访问页面脚本.另外跳转必须是点击直接触发. 代码:ExternalInterface.call("windo ...
- 【模态窗口-Modeldialog】提交请求时禁止在新窗口打开页面的处理方法
在使用Window.ShowModalDialog()打开模态窗口后,在模态窗口内提交时总是会在新窗口中打开. 解决办法: 在要弹出的窗口的<head>之间加: <base targ ...
- vue-router 在新窗口打开页面的功能
项目中,需要点击链接后再新窗口打开页面,大家知道vue是单页面应用开发框架,那么也不是不可以实现这个功能 很简单,详情看下面 1.<router-link>标签实现新窗口打开 <ro ...
- vue-router在新窗口打开页面
1. <router-link>标签实现新窗口打开: <router-link target="_blank" :to="{path:'/app/dat ...
- react 在新窗口 打开页面
遇到这个需求 首先通过 Link a去尝试直接跳转.发现2个问题 1.Link跳转 会自动进行登录校验,我设想是路由没有匹配到,去验证后大致排除了. 因为这个链接 直接粘贴到浏览器 是可以访问到的. ...
- javaScript防止拦截新窗口打开页面
原文发布时间为:2009-05-04 -- 来源于本人的百度文章 [由搬家工具导入] 兼容IE.FF.GOOGLE。防止拦截。。。。 <html xmlns="http://www.w ...
- Google AdSense怎么在新窗口打开
Google AdSense早在十年前就支持在新窗口打开了,为什么我的AdSense广告还在当前页面打开? 德顺查了一下,发现最早在2007年就有网站记载,谷歌AdSense开始试验新窗口打开功能. ...
- HTML之:让网页中的<a>标签属性统一设置-如‘新窗口打开’
在开发过程中,我们往往想在页面中,给<a>设置一个统一的默认格式,例如我们想让链接:“在新窗口打开”,我们就可以使用<base>标签 在网页中添加这段代码: <head& ...
- 网页中<a>标签新窗口和location.href 新窗口打开
在网页制作过程中,经常遇到新窗口打开,一般是a超级链接或者location.href 新窗口打开形式,下面分别讲述两种之间的不同方式 1,a标签 新窗口 添加属性 target="_blan ...
随机推荐
- sqoop:mysql和Hbase/Hive/Hdfs之间相互导入数据
1.安装sqoop 请参考http://www.cnblogs.com/Richardzhu/p/3322635.html 增加了SQOOP_HOME相关环境变量:source ~/.bashrc ...
- [PHP开发] phpmailer问题 错误原因: Could not instantiate mail function
Send via the PHP mail() function function mail_send($header, $body) { // Create mail recipient list ...
- 【mongodb系统学习之八】mongodb shell常用操作
八.mongodb shell常用基础操作(每个语句后可以加分号,也可以不加,看情况定(有的工具中可以不加),最好是加): 1).进入shell操作界面:mongo,上边已有演示: 2).查看当前使 ...
- Flex读取txt文件中的内容(一)
Flex读取txt文件中的内容 phone.txt: 13000003847 13000003848 13000003849 13000003850 13000003851 13000003852 1 ...
- struts2的配置文件
struts2的配置文件 1.配置Action的struts.xml 2.配置Struts2有关属性的struts.properties
- Asp.net的sessionState四种模式配置方案
sessionState节点的配置 web.config关于sessionState节点的配置方案,sessionState有四种模式:off,inProc,StateServer,SqlServer ...
- 芝麻HTTP: Learning to Rank概述
Learning to Rank,即排序学习,简称为 L2R,它是构建排序模型的机器学习方法,在信息检索.自然语言处理.数据挖掘等场景中具有重要的作用.其达到的效果是:给定一组文档,对任意查询请求给出 ...
- ls -l 显示年份
默认情况下ls -l命令只显示月和日,不显示年份: $ ls -llrwxrwxrwx 1 root root 7 Feb 27 16:12 bin -> usr/bin 如要要显示年份,就要使 ...
- 使用pyh生成HTML文档
title: 使用pyh生成HTML文档 tags: [python3, 爬虫,pyh] date: 2018-03-09 21:01:34 categories: Python keywords: ...
- 【视频编解码·学习笔记】10. 序列参数集(SPS)介绍
一.SPS 相关概念: SPS即 "Sequence Paramater Set",又称作序列参数集. SPS中保存了一组编码视频序列(Coded video sequence)的 ...