我用了http://hi.baidu.com/elseif/blog/item/30dfe80136b98b071d95839e.html 里面的js来弹出窗口加载另一个页面。稍作了修改。
但是有时候(50%)弹出的页面中的文本框都是无法输入的,仿佛给加了readonly属性一样,但dropdownlist和button却是可以用的。
这种有可能发生的问题最难debug了。请问各位有没有碰到过。我考虑可能是那个的js(毕竟是拿过来用的)是不是设置了一些属性导致的。
但我仔细看过好像没有能得到这种效果的代码行。我自己的其他代码更没有做过类似的功能。
但是有时候(50%)弹出的页面中的文本框都是无法输入的,仿佛给加了readonly属性一样,但dropdownlist和button却是可以用的。
这种有可能发生的问题最难debug了。请问各位有没有碰到过。我考虑可能是那个的js(毕竟是拿过来用的)是不是设置了一些属性导致的。
但我仔细看过好像没有能得到这种效果的代码行。我自己的其他代码更没有做过类似的功能。
解决方案 »
- 正则
- 怎么注册带自定义属性的事件?请高手看清题目再回答。
- IE Firefox history 问题
- 如何OPEN A DIALOAGE IN JAVASCRIPT
- 如何在 js环境将给定的日期转化星期几
- 数据库读取的图文怎么实现自动滚动自动暂停一直循环
- IE与Mozilla下Dhtml的一些区别小结
- JSP里的Java代码给JavaScript变量赋值时,遇到:回车、引号...怎么办?
- 谁给我一段用js检测浏览器并跳转到不同的页面的代码
- 请问用js怎样在调用window.print()之后,令打印设置的对话框不显示,就直接打印!!
- 又一个jquery代码转JavaScript!
- 能不能用js控制最小化的浏览器窗口桔黄闪动提示新信息。
但是我是在自己的机器上开发测试,访问localhost没有理由加载不完全啊。
现在再说点新的症状:如果在弹出的div不能输入东西的情况下,刷新那个div(在Div的IFrame内部右键刷新,不是整个页面刷新)
后有时会解决问题。也就是在重新load弹出页面后有时就好了
To myvicy: 按你的方法查过了,onload之后alert了一下其中一个input的readonly属性是false的,说明不是只读的。
而如果是别人的js有问题,上面的连接里就是js的内容。
而是整个页面被东西挡住了的感觉。但是看上面的js,popup的window应该是在最上层的啊。比蒙布的z-index要高两层。
而且如果是蒙布,那么会看到一层白色的东西。但现在也没有。
现在的js我放在 http://www.driveway.com/t2o7h1k5r4 ,和原来的改变就是我变成了支持同时弹出多个div,我把它原来的蒙布功能去掉,用来在拖动的时候显示,这样不被以前的layer里的IFrame把mousemove事件捕捉掉。好像还加了一个close时候的callback吧。其他改动不大。调用的时候
var pop=new Popup({ contentType:1,width:950,height:600});
pop.setContent("contentUrl","newpage.aspx");
pop.setContent("title","New record");
pop.build();
pop.show(); 如果在newpage.aspx中含有文本框,并且打开后点击过文本框。下次再打开的时候很可能就点不了那个文本框了。
我在说一下重现的步骤:
1.下载 http://www.driveway.com/t2o7h1k5r4 里面的js文件,加入项目中,注意和下面代码的引用位置匹配,我是放在../JS/里的。
2.新建一个popup2.aspx, 对应cs文件无代码,这里仅贴aspx的代码,请拷贝<html/>中的代码。不能再少了。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestPopup2.aspx.cs" Inherits="WebApplication3.SandBox.TestPopup2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<script type="text/javascript" language="javascript" src="../JS/popup.js"></script>
<script language="javascript" type="text/javascript" >
function f1()
{
var pop=new Popup({ contentType:1,width:950,height:600});
pop.setContent("contentUrl","Testpopup2.aspx");
pop.setContent("title","New record");
pop.build();
pop.show(); }
</script>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="f1();return false;"/>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>3.编译,运行。点击页面的button,弹出popup后点popup window的textbox,只要光标落入其中即可。
4.关闭该popup window(右上角的X按钮图片没有,没关系,也可以点),再次点原页面的button,这次出来的popup就没办法点到textbox输入任何东西了。
现在重现步骤和每一行代码都在这里了。看看有没有高手路过。
而是整个页面被东西挡住了的感觉。但是看上面的js,popup的window应该是在最上层的啊。比蒙布的z-index要高两层。
而且如果是蒙布,那么会看到一层白色的东西。但现在也没有。
----------------------------------------------------
看到这里 感觉这个就很明了了
是加了蒙版层,而层可以设置透明度,至于dropdownlist可用 他本身就是顶端元素。即便不蒙版 用js也很简单,直接获取搜有input元素,设置readonly就好,不能拉取选择同样可用通过js实现...
现在我已经解决了,确实不是被那一层挡住,而是被另一层。含有IFrame的内容层。
在隐掉窗口的时候,我虽然用removechild把更上层的div给去掉了,但并没有remove这个IFrame.
似乎特别remove掉这个IFrame就解决了。
但是这个贴并没有结束。removechild应该会把子孙节点都删除掉的阿。为什么它僵而不死呢?
The removed child node still exists in memory, but is no longer part of the DOM. You may reuse the removed node later in your code, via the oldChild object reference.
我看贴从来没有回贴,,,
今天遇到这个Bug确实是最难的,烦了我N多天了,,
以前以为是focus焦点问题,现在看来不是
------------------------------------------------------------------------------
在隐掉窗口的时候,我虽然用removechild把更上层的div给去掉了,但并没有remove这个IFrame.
似乎特别remove掉这个IFrame就解决了。
但是这个贴并没有结束。removechild应该会把子孙节点都删除掉的阿。为什么它僵而不死呢?
------------------------------------------------------------------------------我想应该是iFrame并没有在内存中清除掉导至的...应该是微软IE的一个removechild的大BUG
再次感谢!!!!!
在移除iframe之前先把该iframe的src设为空。
然后再remove()掉该iframe
最后移除掉包含该iframe的容器如果还不行有一个hack方法:在无法获得焦点的页面按一下Tab键,该页面即可以获得焦点。其它正在进一步研究中……
$(function(){
$("input[type=text]").click(function(){
$(this).focus();
});
});