论坛首页 Web前端技术论坛

javaScript打开对话框

浏览 9472 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-15  

      在javaScript中我们可以通过window.open来打开新的网页,但有时被浏览器拦截住,带来一些不必要的麻烦。今天我在开

发中就遇到类似的情况,后来我是采用打开对话框的方法得以解决。代码如下:

js 代码
  1. function openDialog(url){   
  2.           
  3.          var p = document.getElementById("p");   
  4.            //代表对话框要返回值的对象 
  5.          var config = 'dialogWidth:250px;dialogHeight:300px;';   
  6.          config+='dialogTop:'+p.clientTop+';dialogLeft:'+p.clientLeft+';';   
  7.          config+='center:no;help:no;resizable:no;status:no';  
  8.            // 对话框的窗体属性 
  9.          showModalDialog(url,p,config);   
  10.                
  11.     }  
注:记录本人在开发中遇到的问题,与大家一起交流,如果有的好的解决方法,请指导一下,谢谢!
   发表时间:2007-08-15  
还是得结合着用,showModalDialog在firefox浏览器里是不支持的!
0 请登录后投票
   发表时间: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;
	}
0 请登录后投票
   发表时间:2007-08-16  
可以用
<a href="url" target="_blank" onclick="...">
在onclick中做弹出窗口前的工作
这样弹出窗口是由用户点击来驱动的,不会被浏览器禁止

用户没有点击就弹出窗口,类似广告行为,会被越来越多的用户反感
如果确实要提示什么,用层,不用弹出窗口
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics