小编Dan*_*ert的帖子

当弹出窗口关闭时,如何引发事件(jQuery或vanilla Javascript)?

我想在弹出窗口关闭时或者最好在关闭之前引发一个事件.我将弹出窗口对象存储为对象,但我不知道绑定到close事件的任何方式,或者在窗口关闭之前的事件.

var popupWindow = window.open("/popup.aspx", "popupWindow", "height=550,width=780");
Run Code Online (Sandbox Code Playgroud)

有没有办法使用jQuery订阅close事件,或只是原始的javascript?我正在使用jQuery并且无法添加另一个库,所以如果它不能在jQuery中完成,我将不得不以某种方式滚动我自己的事件系统,以便它可以在所有浏览器中工作.

更新:
我已经尝试在jQuery中使用unload事件,由于某种原因,只要我的弹出窗口打开而不是关闭时就会引发事件.如果我使用Firebug设置断点来延迟卸载事件的订阅,则卸载事件的工作方式应该如此,但无论出于何种原因,当允许javascript自然执行时它无法正常工作.

var popupWindow = window.open("/popup.aspx", "popupWindow", "height=550,width=780");
$(popupWindow.window).unload(function() { alert('hello'); });
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么在窗口加载时可以引发卸载事件?

另一个问题是,我注意到jQuery的"卸载"事件不会像通常那样保持订阅窗口:

popupWindow.onunload = function(){alert('hello')};
Run Code Online (Sandbox Code Playgroud)

它似乎每次提出时取消订阅该事件.这应该发生吗?如果它不是jQuery中的这个bug(或功能?),那么在加载时引发事件就好了,因为我可以检查popupWindow.closed事件内部的属性以确保窗口真的关闭.

javascript jquery

12
推荐指数
3
解决办法
2万
查看次数

移动设备Javascript/CSS支持.有什么?

我即将开始一个针对iPhone,Blackberries和Windows Mobile浏览器的ASP.NET应用程序.除了iPhone之外,我还无法找到有关这些平台支持的技术的更多信息.

由于我习惯开发桌面浏览器,我喜欢使用jQuery和高级CSS功能.看起来我无法在移动平台上使用这些东西.

我想知道的是,如果有人知道好的开发人员资源,我可以找到适合移动浏览器的东西(比如移动设备的quirksmode.org).

据我所知,jQuery不适用于移动浏览器(除了iPhone).有谁知道任何尝试以某种形式将jQuery移植到移动浏览器?我说jQuery,因为这是我现有的网站使用的,我想保持一致性,但如果有其他框架的产品,我也有兴趣检查它们.

更新
我想更新这个,让任何人都知道谁可能偶然发现这个问题.运行网站quirksmode.org的人最近开始创建移动设备兼容性表.你可以在这里查看:

http://quirksmode.org/m/

javascript asp.net mobile-phones

11
推荐指数
1
解决办法
2万
查看次数

用于解析JSON对象数组的正则表达式?

我正在尝试将一组JSON对象解析为C#中的字符串数组.我可以从JSON对象中提取数组,但我无法将数组字符串拆分为单个对象的数组.

我所拥有的是这个测试字符串:

string json = "{items:[{id:0,name:\"Lorem Ipsum\"},{id:1,name" 
            + ":\"Lorem Ipsum\"},{id:2,name:\"Lorem Ipsum\"}]}";
Run Code Online (Sandbox Code Playgroud)

现在我正在使用以下正则表达式将项目拆分为单个对象.现在他们是2个单独的正则表达式,直到我解决了第二个问题:

Regex arrayFinder = new Regex(@"\{items:\[(?<items>[^\]]*)\]\}"
                                 , RegexOptions.ExplicitCapture);
Regex arrayParser = new Regex(@"((?<items>\{[^\}]\}),?)+"
                                 , RegexOptions.ExplicitCapture);
Run Code Online (Sandbox Code Playgroud)

arrayFinder正则表达式的工作,我期望它,但对于原因,我不明白,在路上arrayParser正则表达式不会在所有的工作.我想要它做的就是将各个项目拆分成自己的字符串,这样我得到一个这样的列表:

{id:0,name:"Lorem Ipsum"}
{id:1,name:"Lorem Ipsum"}
{id:2,name:"Lorem Ipsum"}

不管这份名单是一个string[]数组或一个GroupMatch收集无所谓,但我难倒如何获得对象分裂.使用上面声明arrayParserjson字符串,我已经尝试过这个代码,我认为这个代码没有运气:

string json = "{items:[{id:0,name:\"Lorem Ipsum\"},{id:1,name" 
            + ":\"Lorem Ipsum\"},{id:2,name:\"Lorem Ipsum\"}]}";

Regex arrayFinder = new Regex(@"\{items:\[(?<items>[^\]]*)\]\}"
                                 , RegexOptions.ExplicitCapture);
Regex arrayParser = new Regex(@"((?<items>\{[^\}]\}),?)+"
                                 , RegexOptions.ExplicitCapture);

string array = arrayFinder.Match(json).Groups["items"].Value;
// At this point the …
Run Code Online (Sandbox Code Playgroud)

.net c# regex json

11
推荐指数
3
解决办法
3万
查看次数

当DataSource没有返回完整的结果集时,手动设置GridView的PageCount?

我试图弄清楚ASP.NET的GridView分页机制,所以我可以使用框架的本机功能,而不是我公司的自制手动分页例程,这需要大量的工作来实现.

除了如何让GridView我们的PageCount属性与我们的Web服务一起工作之外,我已经找到了所有的东西.目前,我们的Web服务返回总记录数,如下所示:

public object[] GetStuffMethod(int pageNum, int recordsPerPage, out int totalRecords)
Run Code Online (Sandbox Code Playgroud)

这正常工作与一个GridView,但是我发现文档说GrideViewPageCount属性从数据源的总记录而产生.除了返回所有记录之外,真的没有办法根据其他内容设置PageCount吗?

我的数据源中可能有成千上万条记录,所以我宁愿不选择所有这些记录只是为了使GridView的页面计数工作.我可能只是忽略GridView的页数并自己计算它,但如果框架有办法做到这一点,我宁愿使用它.

c# asp.net-2.0

11
推荐指数
2
解决办法
2万
查看次数

好的非侵入式反垃圾邮件混淆器?

我正在尝试使用JavaScript电子邮件混淆器来减少网站上列出的电子邮件中的垃圾邮件的可能性.现在我有了一个基于JavaScript的混淆器,它使用HTML编码和JavaScript的组合,将模糊的电子邮件透明地转换为普通的电子邮件.

我这样做是:

将链接中的href的"mailto:"部分格式化为HTML编码,如:

&#109;&#97;&#105;&#108;&#116;&#111;&#58;
Run Code Online (Sandbox Code Playgroud)

我还对电子邮件进行编码,将@符号替换为(a),以便电子邮件读取如下内容:

stackoverflow(a)example.com
Run Code Online (Sandbox Code Playgroud)

然后,我使用一些JavaScript来破译所有在电子邮件中都有此(a)标志的mailto链接,并将它们转换为@页面加载.

这很有效.对于使用启用了JavaScript的浏览器的用户,他们会看到一切正常.对于未启用JavaScript的人,我知道的每个邮件客户端都会认为该电子邮件地址无效,但是用户应该能够推断出更正符号所需的内容.

我想知道是否有更好的(更少侵入性(或充其量,不是非常侵入性)但更耐垃圾邮件的方式)在网页上混淆电子邮件.

与任何类型的混淆一样,如果人或计算机可以轻松地对其进行去混淆,那么垃圾邮件发送者可以轻松地做同样的事情.因此,我并不期待一个万无一失的混淆,但我很想知道其他建议是什么.搜索Google并没有透露任何我认为比现有解决方案更好的解决方案.我想知道是否还有其他好的选择.

javascript obfuscation spam-prevention email-spam

11
推荐指数
2
解决办法
7379
查看次数

手动提升按钮(或任何控件)单击事件.C#

任何人都可以告诉我如何提高按钮控制的点击事件(或任何事件的事件).

平台:.net 2.0/3.0/3.5语言:c#域名:Windows应用程序,WinForms等

.net c# events click winforms

11
推荐指数
2
解决办法
2万
查看次数

当我尝试重命名方法时,为什么Visual Studio告诉我我有"编译器生成的引用"?

我在一个名为FormattedJoin()的实用程序类中调用了一个方法ArrayUtil.我尝试重命名FormattedJoin()只是Join()因为它的行为类似于.NET,string.Join()所以我认为使用相同的名称是有意义的.但是,当我尝试使用Visual Studio重命名该方法时,我收到此警告:

This member may have compiler generated references
with the same name. Refactoring the member will not
update these references, which may introduce semantic
changes and/or build errors into your code.

我可以很好地重命名该方法,它不会导致生成错误或编译器警告.这样做是否安全,或者我应该避免使用具有此名称的方法?

在看到这个错误之后,我打开了Reflector,看看我是否能够发现.NET是否有内部" ArrayUtil.Join()"或其中的任何变体而且看起来不像它.即使有一个" ArrayUtil.Join()"方法,但不会有一个不同的命名空间使这个问题没有问题?

c# compiler-construction warnings visual-studio-2008

11
推荐指数
1
解决办法
1508
查看次数

JavaScript的Date对象是否容易受到Y2038问题的影响?

假设一个32位操作系统/浏览器,如果我设置一个超过2038年的日期,那么在JavaScript中创建的Date对象是否可以翻转到1970年?

Mozilla的文件说,一年可设置为9999,但我不知道这是不是在所有的JavaScript实现一致的,或者如果这是的规范要求什么的准确描述.

我认为考虑到文档中的措辞,它似乎是使用64位数字来存储时间或以ISO日期格式存储实际数据.

有谁知道浏览器如何实现这一点?

javascript datetime

11
推荐指数
2
解决办法
1913
查看次数

以编程方式访问web.config的<compilation />部分?

有没有办法访问<compilation />web.config文件中的标记?

我想检查文件中的" debug "属性是否设置为" true ",但我似乎无法弄清楚如何做到这一点.我已经尝试过使用了WebConfigurationManager,但这似乎不允许我进入该<compilation />部分.

更新:

我知道我可以轻松地像XML文档一样加载文件并使用XPath,但我希望框架中已经存在一些可以为我做这件事的东西.似乎会有一些东西,因为已经有方法来获取应用程序设置和连接字符串.

我也尝试过WebConfigurationManager.GetSection()以下几种方法:

WebConfigurationManager.GetSection("compilation")// Name of the tag in the file
WebConfigurationManager.GetSection("CompilationSection") // Name of the class that I'd expect would be returned by this method
WebConfigurationManager.GetSection("system.web") // Parent tag of the 'compilation' tag
Run Code Online (Sandbox Code Playgroud)

所有上述方法都返回null.我假设有一种方法可以进入这个配置部分,因为有一个类已经存在(' CompilationSection'),我只是想不通如何得到它.

.net c# asp.net configuration

10
推荐指数
2
解决办法
6631
查看次数

专注于非输入/锚元素?

我正在研究一些需要可以获得焦点的标记的JavaScript.我希望能够使用<div />标签,但<div />标签无法获得焦点.

看起来可以获得焦点的唯一元素是<input />标签和<a />标签.有没有其他方法可以让元素获得非焦点<input /><a />标记的焦点?

我不能使用<a /><input />标记因为我需要能够将内容放在标记内部,所以这些标记都不会起作用,除非有办法允许嵌套<a />标记,尽管我怀疑它是否违反了标准.我试图想出一种方法来允许<div />标签(或任何其他容器元素)获得焦点.

html javascript dom

10
推荐指数
1
解决办法
1万
查看次数