this.RegisterStartupScript("openNewWin", "<script>window.open('http://www.baidu.com'');</script>");
这种方案在ie7中是不行的,阻止了一个弹出窗口。要查看引弹出窗口或其它选项,请单击此处
以下两种方案都不可以,都逃不过ie的法眼
<script>
function openNewWin()
{
window.open('http://www.baidu.com')
}
function locationNewWin()
{
document.location="http://www.baidu.com"
}
</script>
<input type="button" id="aa" value="open" οnclick="openNewWin()">
<input type="button" value="href" οnclick="locationNewWin()">
<a href='http://www.baidu.com' target="_blank" id="bb">test</a>
<form action="http://www.baidu.com" method="get" name="form1" target="_blank" id="form1">
</form>
<script>
document.getElementById('form1').submit();
//document.getElementById('bb').click();
</script>
解决方案可采用div+iframe方式,并提供一个关闭按钮,这种方案感觉不好,便暂时还找不到更好的方法
我说那个淘宝是怎么了,原来是第一次点击的时候弹广告(我用的是世界之窗的浏览器)。
http://www.coderhome.net/zifa/archives/368
document.location不存在以上问题
window.open,self不存在以上问题
window.open,在有mouse人工按下时,才是可信来源,执行效果一样,当然ActiveX及flash存在以上问题,要解决需要外部调用js,需要授权,这点与vista相似
这个东西被广告代码用到滥了.
导致它越来越不受欢迎,容易被当广告过滤掉
===========================
flash解决方法:
在FLASH里面加如以下脚本:
on (release) {
getURL("javascript:open_window('map.htm','','toolbars=no,location=no,scrollbars=no,status=no,resizable=no,width=454,height=431')")
}
步骤二:在网页的<head></head>部分加入下面代码
<script language="JavaScript">
<!--
function open_window(url,name,para) {
window.open(url,name,para);
}
//-->
</script>
因为 flash是外部插件,对于ie而言是不可信来源,所以必须要使用js解释引擎
=========================
js解决方案:
<script>
function openWin(url)
{
var popup = window.open(url, 'popup', 'width=200,height=170,scrollbars=auto');
if (popup == null)
{
document.location.href = url;
}
}
openWin('http://www.baidu.com')
</script>
==========================
以下转:
基本原则:强烈建议在站点中不要使用window.open方法
我们知道在前台开发中,经常遇到需要通过脚本打开一个新页面的需求,这种情况下,我们经常用的可能方法是调用方法window.open方法,该方法的基本使用方法很简单:
oNewWindow = window.open( [sURL] [, sName] [, sFeatures] [, bReplace]) 通过输入指定的sURL参数,而sName若打开新窗口设置‘_blank’即可,但window.open方法的一个很大的不足是容易被屏蔽,特别是浏览器的安全级别设置比较高的情况下,而一些浏览器安装后的默认设置就是屏蔽弹出窗口,而通过脚本window.open方法打开的新页面基本都在拦截的范畴内。也想你认为这个没什么,用户只要多点击一次取消浏览器的拦截皆可,但作为一个一流的站点来说,这就是一个bug,一个严重影响用户体验,甚至严重影响收入的一个大问题,因此强烈建议在站点中不要使用window.open方法。 但是,不使用window.open方法,还有什么方法可以用来打开一个新窗口呢?笔者目前想到几个方法如下:1,利用原生的A标签进行跳转,这是目前认为最有效的方法。 通过设置a标签的href属性,而target='_blank',并且对逻辑判断逻辑作为一个函数注册到a的onclick事件里面,如下所示: <a href='http://www.sample.com/example.html' targetr="_blank" οnclick="javascript:return doHandler(this);"> click me</a>而doHandler函数的逻辑是根据业务流程进行判断,若需要进行跳转则进行return true,若不跳转则返回false即可。那这样实现的理由是什么呢?其实很简单,对浏览器来说,a的跳转是一个很正常的页面跳转,因此拦截插件不对正常的页面跳转进行拦截(不过笔者发现,在一些浏览器设置最高的安全级别或者屏蔽所有的弹出窗口时,这个也会被拦截),而当用户点击a标签的时候,浏览器优先执行onclick的点击事件,而我们正是注册一个事件在这里进行处理,onclick事件执行完毕后,浏览器判断是否进行事件冒泡,如果我们return true,则意味着事件继续进行冒泡,事件进一步的往上抛,进行进一步的处理,而对a标签来说,就是执行默认行为:打开href属性指定的页面,若return false,则阻止事件冒泡,使得浏览器没有机会执行默认行为---打开新页面。 我们正式利用浏览器优先处理onclick事件和适当控制事件的冒泡达到根据我们的业务逻辑进行打开新页面或者不打开的控制。 在一般的场合下,我们这种方式就可以替换window.open了,但若我们需要某种特殊条件判断来决定是否进行跳转,而这个特殊条件的判断是需要跟服务器进行一次异步的交互呢?这种情况比较麻烦,因为点击a标签的事件无法在异步回调函数里面进行传递,因此也就无法控制事件的冒泡决定是否打开页面,这种方式的变通方法就是把这个异步交互置前,放到点击之前处理,先进行跟服务器交互,然后把对应的状态设置到一个全局变量或者某个缓存区中,但用户点击的时候,只需要判断对应的变量即可,通过这样的处理,这种方法还是可行的。 在笔者的项目中,这种方法已经通过了测试,在设置浏览器屏蔽窗口的情况下,IE6,7,8, FF2.0,FF3.0, FF3.5, chrome2.0, 遨游的一些版本,以及TT的常用版本和最新版本均能够正常打开新页面而不被拦截。2,另外一种方案可以构建一个表单,通过表单进行提交。 该方案笔者将会进一步的进行测试。。。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tenfyguo/archive/2009/08/23/4476208.aspx
=============================
今天看到IE7中文版发布了,IE7的英文版我倒是装了,为了测试用,用户体验和IE6变化很大,学习成本增加了,估摸着用户未必喜欢,特别是低端用户(别和我说现在低端用户早就用过MYIE,^_^),最明显,也是最跟风的改变就是也用了TAB的方式浏览多网页,不过这对以WEB上交互设计未必是好事
做过WEB交互的人都知道,很多时候会用到javascript来window.open弹出一个Mini window,来做一些交互的中转等,现在有了TAB,window.open是弹出到TAB还是new WINDOW里面呢。tab其实就是把很多的window用一个盒子装起来,然后用TAB标签上.
IE7的设置里面有灵活的给用户的TAB和WINDOW的强制设置,也就是说如果用户选择了全部用TAB打开,你
![](http://blog.donews.com/images/blog_donews_com/dodo/tab.png)
怎么open都是在TAB里面,当原来mini window的交互界面出现在TAB里,然后在切换回触发页的时候,用户体验极差,每个TAB显示的网页对用户来说是平级的,而原来是opener的关系,至于以前的父窗口和子窗口之前的交互。在TAB之间还能实现么?
很多采用window.open做交互的网站在用户体验都要变差了,当然也许会有人会说我们本来就不喜欢window.open
也许javascript也要升级一下.来个tab.open
(个人看法)
BTW:
about:blank 也变成了about:tabs,
默认Tab的介绍页还是全部用的table布局设计:(
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=1088475
===========================
Macromedia Flash Player 带有一个 AllowScriptAccess 参数,它可以用来控制是否允许执行来自 swf 本身对外脚本。这个特性需要 Flash Player 6.0.40.0 及其以上版本支持。
对外脚本通过使用特定的 FSCommand 或 getURL 命令来完成。
含有 Flash 动画的网页可以在 HTML 代码中为 Flash Player 设置参数(Internet Explorer 使用 PARAM 标记,而 Netscape Navigator 使用 EMBED 标记)。
AllowScriptAccess 参数可以有两个值: "always" 和 "never":
当 AllowScriptAccess 设置为 "never" 时,运行对外脚本会失败;
当 AllowScriptAccess 设置为 "always" 时,可以成功运行对外脚本;
如果没有定义这个参数的值,将会取默认值 "always".
注意:早期版本的播放器会忽略这个参数,通常会表现为 AllowScriptAccess 好像被设置为 "always" 一样。
使用 Object 标记的例子:
<PARAM NAME="AllowScriptAccess" VALUE="never">
使用 Embed 标记的例子:
<EMBED src="display.swf" AllowScriptAccess="never" ... (其他参数)> </EMBED>
========================================
filed in JavaScript, myois开发日志, wordpress研究室 on 十二.25, 2008
首先有使用taobao的人应该会发现,淘宝的首页弹窗出现有两种情况:
1.你没有使用拦截插件。
那么在页面打开时广告窗口就直接弹出了。
2.在你有使用拦截插件。
在你第一次点击页面连接时弹出。
有们直接看它的代码分析一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
E.on(window, 'load', function() {
//使用cookie记录24小时内是否已打开过
if (TB.bom.getCookie('_tb_defaultbackpop_') == 1) return;
var saveStatus = function() {
var nowDate = new Date();
var nowTime = nowDate.getHours()*3600 + nowDate.getMinutes()*60
+ nowDate.getSeconds();
var DAY = 24*3600;
var leaveTime = DAY - nowTime;
TB.bom.setCookie('_tb_defaultbackpop_', 1,
leaveTime/DAY, document.domain, '/');
}
var createPopup = function() {//弹窗函数
var adPopup = window.open('about:blank','_backad','width='+(pw||760)+
',height='+(ph||480)+'
,toolbar=no,location=no,directories=no,status=yes,resizable=no,scrollbars=no');
adPopup.blur();
adPopup.opener.focus();
adPopup.location = adUrl;
}
var popAd = function() {
try {
createPopup();//载入时打开
} catch (e) {//如果被拦截执行这里,把弹窗加到document的click事件中
$E.on(document, 'click', popAd2);
} finally {
saveStatus();
}
}
var popAd2 = function(ev) {
try {
var nodeType = $E.getTarget(ev).tagName.toLowerCase();
if ('input' == nodeType || 'select' == nodeType
|| 'option' == nodeType || 'button' == nodeType) {
return;
}
} catch (e) {}
//这里是判断如果点击的是这几种元件就不弹窗
$E.removeListener(document, 'click', arguments.callee);
try {
createPopup();
} catch (e) {}
saveStatus();
}
var adUrl = 'http://www.taobao.com/promotion/defaultbackpop.html';
var pw = '760', ph = '480';
setTimeout(popAd, 2000);
}); |
但问题是现在各大网站纷纷效仿。逼我直接禁用js了!跟流氓的直接用mousemove事件,你啥都不点都弹出来了!!!