炼狱:window.createPopup()弹出提示tips

气泡,提示Tips,Popup。一款基于Swift编写的气泡弹窗,可高度自定义.zip 立即下载

炼狱:window.createPopup()弹出提示tips


CCBS 系统增加了新的需求,给界面上的Text文本输入框和Select下拉框增加信息提示。
对于Text输入框来说,实现起来并不难:重载Text文本框的onmouseover事件,然后显示出Text文本框的title也就可以了。
但是,对于Select控件来说就远远没有这么简单了。首先Select本身没有Title属性!无疑增加了实现的难度。
在网上找了点资料后,发现window.createPopup()函数可以实现弹出式的tips,而且微软的技术支持网站也有这方面的例子(参见:http://msdn.microsoft.com/workshop/samples/author/dhtml/popup/usingpopup.htm)。但是实现起来并不是那么一帆风顺的事情。
首先,window.createPopup()生成的窗口在显示的时候要手动指定该窗口的位置(x,y坐标),窗口的宽度和高度。而显示的内容是变化的,显示的字符串有长有短,窗口的长度和宽度也要跟着变化,如何实现呢?
其次,windows网页上的title属性在显示提示信息的时候是永远不会换行的,哪怕你显示的信息超过屏幕的显示范围它也不会顾忌到你的感受。windows标准就是我们的标准,我们也只能仿效了。
上面的两个问题着实让我困惑了一阵子,应该说是一个下午吧。不过最后问题还是得到解决了,虽然过程颇有些周折。
首先解决的是弹出窗口的指定位置,宽度和高度问题。窗口的位置就是响应鼠标事件的位置,但是该位置一定要区分清楚,鼠标如下几个位置的参数:clientX,clientY;offsetX,offsetY,screenX,screenY,x,y等。(具体每个位置的意义有单独的文章来解释)在这里应该是相对于响应控件的位置,使用的是offsetX,offsetY值。
要控制createPopuo()生成的窗口的宽度和高度,必须使用一个比较“土”的方法:首先调用oPopup.show(0,0,width,height)方法,马上获得该窗体的scrollWidth,scrollHeight,然后对该窗体隐藏:oPopup.hide()。获得具体的宽度和高度之后,再在具体的位置上显示真正的提示信息:
oPopup.show(x,y,scrollWidth,scrollHeight)。也就是说:在真正显示tips之前要调用一次显示方法获得实际的宽度和高度!这是解决问题的重点!!!
让显示的信息不换行的问题解决过程说难也不难,重要的是要能够想到该方法:使用table中的td不允许换行的属性:nowrap,那么包含在td中的内容就会一直显示出来,永远都不会换行了!!!
代码的范例如下:
 
var winPopup = window.createPopup(); //Create the window to popup
var winstr="<table style=/" border: 1 solid  #FFA6CA/" border=/"0/" width=/"100%/" height=/"100%/" cellpadding=/"0/" cellspacing=/"0/"  background=/"/" >";
 winstr+="<tr><td align=/"center/"><table width=/"100%/" height=/"100%/" border=/"0/" cellpadding=/"0/" cellspacing=/"0/">";
 winstr+="<tr><td nowrap id=/"tdMsg/" valign=/"center/" style=/"font-size:12px; color: red; face: Tahoma/"></td></tr></table></td></tr></table>";
winPopup.document.body.innerHTML = winstr;
var eventElement = null;
var xPos = 0;
var yPos = 0;
var timer = null;
/*************************************************************************
 Function Name:showPopupHelp
 Description:Popup a window that shows the content of text or select
 Input Parameter:None
 Output :None
 Return:None
 ***********************************************************************/
function showPopupHelp(helpMsg)
{
 initPopupWindow(helpMsg);
 eventElement = event.srcElement;
 xPos= window.event.offsetX;
 yPos= window.event.offsetY;
 timer = setTimeout("showPopupWindow()",1000);
}
/*************************************************************************
 Function Name:hidePopupHelp
 Description:Invisible the popup window
 Input Parameter:None
 Output :None
 Return:None
 ***********************************************************************/
function hidePopupHelp()
{
 clearTimeout(timer);
 winPopup.hide();
}
/*************************************************************************
 Function Name:initPopupWindow
 Description:Initilize the popup window,draw the frame
 Input Parameter:String to show
 Output :None
 Return:None
 ***********************************************************************/
function initPopupWindow(msgstr)
{
 winPopup.document.all('tdMsg').innerText = msgstr;
}
/*************************************************************************
 Function Name:showPopupWindow
 Description:Visible the popup window
 Input Parameter:None
 Output :None
 Return:None
 ***********************************************************************/
function showPopupWindow()
{
 winPopup.show(0,0,10,10);
 var h = winPopup.document.body.scrollHeight;
 var w = winPopup.document.body.scrollWidth;
 winPopup.hide();
 //var w = eventElement.offsetWidth;
 //var h = winPopup.document.body.scrollHeight;
 //var x = eventElement.style.left;
 //var y = eventElement.style.top + eventElement.offsetHeight;
 var x = xPos + 3;
 var y = yPos + 3;
 winPopup.show(x,y,w,h,eventElement);
 delete eventElement;
}
 

用DIV完美模拟createPopup 弹出窗口(脚本之家修正版),支持Firefox,ie,chrome 补增一个效果图! 模拟Popup body{ margin:0; padding:0; text-align:center; } #container{ margin:50px auto; padding:10px auto; } #popupcontent{ position:absolute; border:1px solid #000000; line-height:17px; background-color:#F7F7F4; visibility:hidden; cursor:defaul 立即下载

相关推荐

使用window.createPopup();做的简单下拉菜单

使用window.createPopup();做的简单下拉菜单 使用层做下拉菜单或者漂浮图片的话,最大的问题就是会被输入框等挡住,更别说框架,所以现在比较流行用window.createPopup();的说,它可以在页面所有元素之上,不存在被谁遮挡的问题。下面是刚写的一个简单的下拉菜单。代码很简单,很容易看懂,所以修改也方便。//首先定义两个数组,一个是菜单文字,一个是链接var Me

SmartJavaer的专栏 1542

用DIV完美模拟createPopup 弹出窗口,支持Firefox,ie,chrome

最近要重构公司的一个站,有一个拾色器只支持IE,不支持FIREFOX CHROME等浏览器,花了点时间对照原来的重写了个。完美实现createPopup方法的弹窗效果,欢迎大家拍砖! 模拟Popup<!-- body{ margin:0; padding:0; text-align:center;}#container{ margin:50px

YIDAY的专栏 5312

JS 弹出层源兼容IE、FF、Chrome

function showWin(o1,o2){var mask=document.getElementById(o1);var popwin=document.getElementById(o2);//document.documentElement.scrollHeight

xiangsuixinsheng的专栏 2595

js中window.createPopup()方法以及attachEvent("onmouseover",OverFuncOne)实例

&lt;html&gt; &lt;body&gt; Internet Explorer 5.5支持一个新的window对象的方法:creatPopup()。你可以向下面一样创建一个弹出窗口: &lt;br&gt;   var popupObj = window.createPopup(); &lt;br&gt;   当你创建了这个对象后,弹出窗口并不显示。你必须要调用它的s...

333

window.createPopup()

Popup窗口是IE5.5及以后版本提供的一个新feature: ·popup窗口在用户点击它自身之外的任何地方或另一个popup打开的时候会自动关闭; ·popup在显示的时候不能获得焦点,所以用户已focused的操作将继续在其父窗口中执行; ·组成popup的DHTML可以存储在其父document或其他的document元素中; ·popup窗口中不支持文本框一类的编辑框element; ...

weixin_30562507的博客 227

解决element-ui el-select在移动端需要点击两次才能弹出下拉与选中,且在ios上点击浏览器左上角出现“全选”弹窗

解决element-ui el-select在移动端需要点击两次才能弹出下拉与选中,且在ios上点击浏览器左上角出现“全选”弹窗。

AwoCT的博客 1334

window.createPopup()用法以及短消息提示框代码

一、在做一个portal项目时,用户要求在门户首页上的待办信息要有明确的提示,且在浏览器最小化的情况下,当有新的待办信息时,也要做提示。用了alert方法、或者用div的方法都很难实现“在浏览器最小化的情况下弹出提示信息”。alert方法会把信息弹出在桌面的正中央,同时会被其它窗口挡住。用div的方法实现的提示框会依赖于父窗口,因为它本身就是html页面上的一部分。最后发现,用window.cre

C# 1584

记跨浏览器开发的案例

讲之前:由于目前公司的项目开发时间比较早,大概十几年前的东东了。最开始只支持IE,还是IE低版本,IE8、9、10、11、Edge都会有点问题。需求开发完后,做浏览器适配时候,主要是要兼容IE8-11,chrome,firfox,当然还有国产浏览器如360、qq、搜狗等。现总结下遇到的问题及解决方案。 1.eval(idName)问题:IE、Chrome浏览器下都可以使用eval(id...

weixin_38166557的博客 253

window.createPopup

Internet Explorer 5.5支持一个新的window对象的方法:creatPopup()。你可以向下面一样创建一个弹出窗口:   var popupObj = window.createPopup();   当你创建了这个对象后,弹出窗口并不显示。你必须

2101

ie11不兼容window.createPopup的问题解决

最近在做ie11的兼容性问题,每次都会因为window.createPopup这个已经不支持,而导致会报一些稀奇古怪的错误,比如,var popup=window.createPopup之后,popup这个对象无法使用popup.document.getElementById,会报SCRIPT438: 对象不支持“getElementById”属性或方法这个错,现在终于解决的,,只要在每次调用之前

BinZor的博客 1万+

uniapp---弹出框(弹窗)组件(有取消,确定按钮)代码

【代码】uniapp---弹出框组件代码。

heavenz19的博客 3952

windowcreatePopup方法

此方法为IE提供,在FireFox中不支持语法: oPopup = window.createPopup()返回值: oPopup :  对象(Object)。返回弹出窗口( popup )对象。说明: 建立一个弹出窗口( popup )。 弹出窗口( popup )初始化为隐藏模式。 当一个激活的对象导致弹出窗口( popup )显示时,此对象不会失去焦点。所以,对象建立一个弹出窗口( popu...

iteye_10902的博客 903

firefox中使用window.createPopup的问题

火狐中使用window.createPopup(),兼容ie的解决办法:if (!window.createPopup) { var __createPopup = function() { var SetElementStyles = function( element, styleDict ) { var style = element.style ; for (

battlehawk 1万+

18. Window createPopup() 方法

定义和用法 createPopup() 方法用于创建一个 pop-up 窗口。 语法window.createPopup()实例<html> <head> <script type="text/javascript"> function show_popup() { var p=window.createPopup() var pbody=p.document.body pbody.style.

enlyhua的专栏 1430
上一篇: 如何快速实现HTML编辑器.NET组件
下一篇: 用JavaScript 记录用户在表单中所作的修改
SmartJavaer
博客等级 码龄20年 13粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值