浏览 9472 次
锁定老帖子 主题:javaScript打开对话框
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-15
在javaScript中我们可以通过window.open来打开新的网页,但有时被浏览器拦截住,带来一些不必要的麻烦。今天我在开 发中就遇到类似的情况,后来我是采用打开对话框的方法得以解决。代码如下: js 代码
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-08-15
还是得结合着用,showModalDialog在firefox浏览器里是不支持的!
|
|
返回顶楼 | |
发表时间:2007-08-15
我写的版本。在ff,ie,opera上测试过。
用法: showDialog(url, {a:1, b:2}, {width:'300px', height:'200px', dependent:true}); dependent表示关联窗口,即modeless dialog 在打开的dialog窗口里有 dialogArguments.a == 1 这个方法不支持modal dialog,因为ff下modal是需要本地权限的。 function showDialog(url, args, features) { if (!features) features = {}; if (!args) args = {}; args.opener = window; var dialog; if (features.dependent && 'showModelessDialog' in window) { if (features.resizable == null) features.resizable = 1; if (features.status == null) features.status = 0; var f = []; if (features.width) f.push('dialogWidth:' + features.width); if (features.height) f.push('dialogHeight:' + features.height); if (features.top) f.push('dialogTop:' + features.top); if (features.left) f.push('dialogLeft:' + features.left); for (var key in features) { if (features.hasOwnProperty(key)) f.push(key + ':' + features[key]); } dialog = window.showModelessDialog(url, args, f.join(';')); dialog.moveBy = function (x, y) { if (x) this.dialogLeft = parseInt(this.dialogLeft) + x + 'px'; if (y) this.dialogTop = parseInt(this.dialogTop) + y + 'px'; } dialog.resizeBy = function (x, y) { if (x) this.dialogWidth = parseInt(this.dialogWidth) + x + 'px'; if (y) this.dialogHeight = parseInt(this.dialogHeight) + y + 'px'; } dialog.opener = window; } else { var f = []; for (var key in features) { if (features.hasOwnProperty(key)) f.push(key + '=' + features[key]); } dialog = window.open(url, 'dialog', f.join(',')); dialog.dialogArguments = args; } return dialog; } |
|
返回顶楼 | |
发表时间:2007-08-16
可以用
<a href="url" target="_blank" onclick="..."> 在onclick中做弹出窗口前的工作 这样弹出窗口是由用户点击来驱动的,不会被浏览器禁止 用户没有点击就弹出窗口,类似广告行为,会被越来越多的用户反感 如果确实要提示什么,用层,不用弹出窗口 |
|
返回顶楼 | |