小编vee*_*ain的帖子

jQuery'on'没有在动态生成的模态弹出窗口中注册

我的印象是jQuery的on事件处理程序意味着能够"监听"动态创建的元素并且它应该替换它的行为live.但是,我所经历的是使用on不捕获click事件而使用live是成功的!

我的情况的棘手方面是我不仅动态创建内容,而且我通过AJAX .get()调用,并将结果HTML插入模态.dialog()jQueryUI弹出窗口.

这是我试图完成的简化版本(包装$(document).ready(...)):

$.get("getUserDataAjax.php", queryString, function(formToDisplay) {
    $("#dialog").dialog({
        autoOpen: true,
        modal: true,
        buttons...
    }).html(formToDisplay);
});
$(".classThatExistsInFormToDisplay").on("click", function() {
    alert("This doesn't get called");
});
Run Code Online (Sandbox Code Playgroud)

on我发现的文档中,我正在接近编写我的on活动:

$("p").on("click", function(){
    alert( $(this).text() );
});
Run Code Online (Sandbox Code Playgroud)

但是,出于某种原因,live我会按照预期工作 - 而on我却失败了.

这不是一个问题:"我怎样才能使它发挥作用",因为我发现,on一定会成功(捕获点击)如果我宣布它里面function(formToDisplay)回调.

我的问题是:什么是错的on,这是不是一个模式弹出内找到我的动态创建的元素呢?我的jQuery实例是jquery-1.7.2.jQueryUI是1.8.21.

这里有两个jsFiddles来解决这个问题.单击两个实例中的单词"Test"以查看不同的行为.在代码的唯一区别是更换onlive.

点击被抓获live.

点击不是由捕获 …

ajax jquery modal-dialog click

9
推荐指数
1
解决办法
3031
查看次数

什么会导致Tomcat(v8)具有周期性规律性的CPU峰值

在Windows 2012 RT(x64)TEST服务器上,我们正在运行Tomcat 8安装,并且CPU使用率在达到峰值使用率的常规性方面令人不安.

安装我们的应用程序后,但任何人访问它之前,会发生这种情况.我已经访问了几个页面并测试了一些功能,但没有任何可以创建我所知道的这种行为.

服务器上有2个虚拟处理器,每隔约20秒,CPU使用率将在一个处理Tomcat的处理器上达到100%,持续10秒(给予或接受).见下文:

周期性峰值图

模式的规律性向我表明在Tomcat 8的安装或设置中有些不正确.

我已经安装了YourKit Java Profiler(通过SO推荐),我希望能够解释导致这些峰值的原因,但是还没有看到线程启动的原因 - 至少部分是因为我的新意到YourKit.我确实将它附加到Tomcat启动文件,它似乎跟踪行为.

catalina日志在加标事件期间是静默的(就像我的应用程序日志一样)但是当我停止Tomcat时,有一些关于ThreadLocals的消息开始但无法删除然后:"...线程将随着时间的推移而更新尽量避免可能的内存泄漏."

我让服务器在周末运行,模式一直持续到今天,所以我不认为我的症状会消失.无论启动什么,现在只需每20秒启动一次这些线程(和/或YourKit)消耗系统上所有可用的RAM .

什么是可能的方法来隔离这种异常的Tomcat活动,并希望停止或纠正它?

YourKit中有许多图表和标签,因此我不愿列出可能有用的所有内容.感谢您帮助我缩小了YourKit(或其他工具)可以为我提供的问题.

来自catalina日志的关于启动的信息:

Apache Tomcat/8.0.23
Architecture: amd64
Java Home: C:\Program Files\Java\jre1.8.0_65
CATALINA_BASE: C:\Program Files\Apache Software Foundation\Tomcat 8.0
Run Code Online (Sandbox Code Playgroud)

2015-12-08更新

在Gergely的请求下,该应用程序是DSpace的本地安装.它是一个带有Postgres SQL数据库后端的Java应用程序.我们从这里定制一个开源版本:http://www.dspace.org/introducing.我不确定还有什么可以提供帮助,我认为堆栈跟踪更多地揭示了什么是(并且没有)运行 - 见下文.

通过启用YourKit中的Stack Telemetry,可以通过将光标拖过一段Profiler历史记录来获得"CPU Estimation".对我来说,看起来所有CPU正在做的就是空转.Java文件是否在Tomcat例程下面如图?他们没有像DSpace那样打击我(尽管我不是专家)也不会看起来在CPU达到峰值时正在完成任何工作.

值得注意的是:在静默期间堆栈跟踪是相同的 - 唯一的区别是CPU时间(ms)是数百而不是数千毫秒.为了比下面的更直接的比较,hump在Thread.run()中表示~8,000ms,而静默期消耗~125ms的cpu时间(尽管覆盖大约相同的时间量).

最后,当请求应用程序的页面时,后续的代码分支出现在调用树中.如果它发生在尖峰期间,则可能只需要400毫秒的CPU时间来加载整页.出现的代码分支是ApplicationFilterChain.java,作为整个单独的分支以及PooledExecutor $ Worker.run() - 在层次结构中的java.lang.Thread.run()下面.

当试图解释堆栈跟踪时:EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run()负责吗?

处理器峰值没有已知的相关活动

CPU分析

2015-12-08更新#2

YourKit预先配置为隐藏某些java类名称模式,这些模式模糊了java.lang.Thread上的向下钻取.清除过滤器启用以下屏幕截图,显示峰值事件期间的绝大多数处理时间是通过调用以下3种方法:

  • java.io.WinNTFileSystem.canonicalize0
  • java.io.WinNTFileSystem.getBooleanAttributes(inFile.exists())
  • StardardRoot.java

我很抱歉还不了解Tomcat或DSpace以了解谁正在启动这些任务.(如果重要的是第一行正上方的那条线java.lang.Thread.run()然后 …

performance tomcat yourkit dspace windows2012

9
推荐指数
1
解决办法
9535
查看次数

尽管style ='display:none',仍可在IE中选择隐藏文字

这似乎是IE特定的"功能".我用IE8测试过.用户John H通过在IE6和IE7中确认进行了贡献.

我有一些文本内置到我的页面中,并从元素的创建开始 style = "display: none;"

我没有使用jQuery来隐藏文本而且文本没有"显示".虽然为了进一步公开,我使用jQuery的.html()方法访问元素的内容.

但是,如果用户选择我的元素附近的文本display:none并复制已选择的内容,则会包含隐藏文本.就好像它已经正常显示一样.

标记看起来像这样:

...
<td align="left">
    Text they should see
    <div id="whateverButUnique" style="display:none;">Value I want hidden</div>
    Some other text
</td>
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴,我可以使用IE <9重现问题.

虽然这不是这个特定应用程序的严重问题,但它让我措手不及,我想知道这是一个"功能"还是我做错了什么.

我见过的大多数其他问题display:none让他们的海报内容可见.同样,选择,复制和最终粘贴之前,我的内容基本上是不可见的.

我可以阻止Internet Explorer用户通过复制/粘贴来查找此内容吗?我意识到他们可以在开发人员工具中查看它并查看源代码.

更新:由于其他用户的评论,我自己也尝试应用的风格visibility:hiddenz-index=-1.用户John H已经尝试了许多其他的隐藏尝试,但IE迄今为止顽强地允许这个功能漏掉.感谢所有伟大的想法!

更新:感谢您问希瑟沃尔特斯 ; 我需要在页面上使用的值仅在服务器端可用,但我在页面加载后使用它们通过jQuery/AJAX使用外部程序的额外处理生成链接.因此,我构建了隐藏但包含值的页面,然后对这些隐藏值进行操作以构建对它们有用的东西.

一旦我完成了使用它们构建有用的东西,我现在意识到我可以通过jQuery擦除它们并获得额外的性能.以下代码将为启用了javascript的每个人完成此操作:

$("[id^=whateverButUnique]").html("");
Run Code Online (Sandbox Code Playgroud)

由于页面上可能存在数百个元素,因此这种额外处理并不理想.

vega,我不相信这个解决方案对我有用,因为我必须在服务器端构建页面和我隐藏的内容.它们都是在服务器端循环中构建的,可能有数百个其他元素,因此我可以选择在服务器将所有内容放在表中(包含隐藏元素)或者第二次循环遍历它时将其构建到位(痛苦)并尝试强制显示元素:无法在不太可能被选中的地方.

Ohgodwhy,我想相信你的解决方案.在IE8中,隐藏字段没有显示在记事本中; 但是,我能够复制该部分并将其粘贴到Microsoft Word中.它不再被隐藏. …

css jquery internet-explorer

8
推荐指数
2
解决办法
4134
查看次数

javascript错误地确定夏令时时间线 - 2006年的一个例子

我在javascript new Date()对象上阅读了许多关于夏令时时间线的 StackOverflow问题- 就像它们被越过时一样.但是,我还没有看到关于这个特定问题的答案,或者在仍然依赖 'unix time'的情况下解决它的方法.

我个人选择通过将javascript日期作为日期传递给我的PHP代码而不是unix时间来解决此问题.然而,唠叨的问题仍然存在!我已经在IE8,Chrome和FF上确认了这种行为,所以我假设它会对你的行为相同.(更新: OSX用户可能无法生成此行为)

我的研究; 对我的问题最近的问题:

  • 该用户正在处理DST更改周围的特定时间.
  • 该用户担心时间的呈现取决于用户的时区.该页面上接受的答案提到getTimezoneOffset"片状",这使我无法深入研究.
  • 请参阅下面的答案,了解其他一些有很多见解的问题

我已经在2006年11月1日左右生成了测试场景.根据您所在的时区,这可能会或可能不会对您有所帮助.如果我正确理解了javascript方面,您需要将PC的时钟同步到

东部时间(美国和加拿大)并选中"自动调整夏令时的时钟".

我将这个实验基于PHP的"印第安纳波利斯"时区.我的javascript结果,当我发现2006年11月1日的unix时间与PHP生成的时间相差一小时(3600秒).根据这个页面(谢谢乔恩!)javascript是错误的.

这两种语言的结果" 于2006年6月11日重新达成协议!

这和其他的研究使我相信,得到的Javascript的历史错误,选择了错误的周日"依傍"了DST的 - 从而导致我看到的差异.

我试图尽可能地简化这个,但仍然有相当多的齿轮在运动.

1)这是PHP代码和输出,显示直到11/01/2006日期之前的CORRECT毫秒数.

date_default_timezone_set("America/Indiana/Indianapolis");
echo "Unixtime for November 1, 2006 is: ".strtotime("11/01/2006")."\n";
echo "Unixtime for November 6, 2006 is: ".strtotime("11/06/2006");
Run Code Online (Sandbox Code Playgroud)

结果是:

Unixtime for November 1, 2006 is: 1162357200 (where the disagreement lies)
Unixtime for November 6, 2006 is: 1162789200
Run Code Online (Sandbox Code Playgroud)

它们都基于GMT-0500.

2)在Javascript中,(请参阅我的 …

javascript php windows unix-timestamp dst

6
推荐指数
1
解决办法
1196
查看次数

当代理*始终*声明安全连接时检测SSL

我想检测用户是否正在查看安全页面,如果没有则重定向(用于登录).

但是,在我看到服务器变量和代理(现在)告诉我这$_SERVER['HTTPS']'on'URI明确指示的情况之前,我的网站通过代理.它还显示'on'用户何时"安全"导航.

导航http://https://输出$_SERVER['SERVER_PORT']= 443.

我没有能力对代理进行任何更改,所以我想知道:

  • PHP有任何其他选择让我发现真相或......
  • 我是否坚持使用JavaScript的检测和重定向机制.

我挖掘这个问题的想法,但他们主要围绕$_SERVER['HTTPS']变量值得信赖.呸!

似乎这个问题至少经历过类似的问题,但是他/她能够通过调整apache解决方案来解决它.

是否有任何其他PHP SERVER变量或技巧可用于检测用户的URI开头的内容?查看我的网站http与https时$ _SERVER变量之间的唯一区别如下:

  • _FCGI_X_PIPE_(随机出现)
  • HTTP_COOKIE(sto-id-47873包含在非安全版本中,但我没有把它放在那里)
  • REMOTE_ADDR(这和接下来的两个一直在莫名其妙地改变!)
  • 远程主机
  • REMOTE_PORT('代理人',你为什么不断改变这个?)

这些物品中的任何一个都足够坚固,可以在不分裂的情况下施加重量并在以后引起疼痛吗?也许我不应该相信通过代理过滤的任何东西,因为它可能在任何给定时间发生变化.

以下是我为此目的使用JavaScript的计划; 这是我最好的吗?

function confirmSSL() {
    if(location.protocol != "https:") {
        var locale = location.href;
        locale = locale.replace(/http:\/\//,"https://");
        location.replace(locale);
    }
}
<body onLoad="confirmSSL()">...
Run Code Online (Sandbox Code Playgroud)

我想如果用户在我的社区中禁用了JavaScript,那么他们希望知道他们在做什么.他们应该能够手动进入安全区域.什么样的<noscript>建议是司空见惯/良好做法?也许是这样的事情:

<noscript>使用https://blah.more.egg/fake导航以保护您的信息.</noscript>

有效的PHP解决方案(有很好的解释)将优先考虑正确的答案.随意提交更好的JavaScript实现或链接到一个.

非常感谢!

javascript php https proxy

6
推荐指数
1
解决办法
972
查看次数

jQuery:add()性能; 有没有更好的办法?

我想做的事情:将页面(某种类型)上的所有相似元素分组到一个我可以在以后迭代的对象中 - 或对其中的每个元素应用彻底的更改.

我的代码成功完成了给定的任务,但是当元素数量增长到200-300 +时,性能急剧下降,用户已经注意到了.我已经隔离了有问题的代码行,并想知道是否有另一种方法来完成同样的问题.

add()函数似乎是基于我放置它们的定时器的有问题的操作.首先,执行操作所需的时间是.001但是增长直到元素数达到300并且每个附加元素需要~.1秒并且继续减慢.

我已经研究了(以及更多)jQuery性能增强功能,并实现了其中一些(即3)但他们没有给我任何有意义的性能提升.令人惊讶的是,此代码在1秒内(!)执行Firefox(300多次调用add()),而Chrome和IE大约需要10-20倍或更多...

这是我的代码:

rowsToChange = $([]);
// Grab all the ids greater than whichever one I'm currently looking at:
var arr = $.makeArray($("[id^=stackLocatorLinkFillUp]:gt("+(uniqueID-1)+")"));
for (var i=0; i<arr.length; i++) {
    $this = arr[i];
    // <<< VARIOUS CONDITIONALS that make this as selective as possible REMOVED >>>
    startTimer = new Date().getTime();
    // **************************
    // PROBLEMATIC LINE FOLLOWS when 200+ records:
    rowsToChange = rowsToChange.add($this);
    // Grows from .001 to .1xx after 300 iterations
    console.log("innertiming:"+(new …
Run Code Online (Sandbox Code Playgroud)

javascript arrays performance jquery add

5
推荐指数
1
解决办法
596
查看次数

如何打破悬挂的ajax调用并加载另一个页面

我正在开发发票应用程序.目前我正在使用OO php来构建发票对象.对象本身包含客户,产品,发票详细信息,公司的对象.

现在我正在编写一个页面来进行概述.发生的问题是,当我有太多的发票(仅用1500个虚拟发票进行测试,其中的时间可能会更多)时,php对象的构建大约需要7秒钟.我觉得这太长了,因为这只是一个请求.此外,由于php运行服务器端,因此页面在对象全部构建之前没有加载任何内容.我盯着一个空屏幕7秒,然后瞬间得到了所有东西(所有在本地主机上,所以在线它应该更糟).

由于需要为页面提供更多功能,然后只是作为概述(即:创建新发票,使用过滤器来缩小显示的发票),我不希望用户需要等待发票才能构建使用其他功能,我改变了页面的工作方式.

现在我首先加载我的基本html结构,然后使用$ .ajax()调用开始获取我的发票数据.我构建了一个ajax_loader来通知用户发生了什么.呼叫完成后,会显示数据,但我仍然遇到用户无法执行任何操作的问题.他可以点击一个链接/按钮,但是在我的ajax调用完成之前它不会"动作".一旦通话完成,一切正常.在有活动呼叫时单击链接确实会注册"click"事件,但触发器仅在ajax完成时发生.

这个问题与我同步或未同步的ajax调用无关.如果有人对如何克服这个问题有任何建议,我将非常感谢他们.我的第一个想法是取消ajaxcalls但是从我读到的东西到现在为止我怀疑abort()函数不会完成工作.

编辑: 做一些更多的试用,我注意到ajaxcalls仍在运行时一切正常,除了从我自己的网站(域,服务器或我应该调用它)加载页面或做任何其他涉及相同的ajaxcall服务器即:

$("#dummyButton").click(function(){  
window.location='http://www.google.com' //works  
window.location='index.php'  //doesn't work  
alert("test"); //works  
console.log("test"); //works    
})

a href='http://www.google.com'  //works  
a href='index.php' //doesnt work 
Run Code Online (Sandbox Code Playgroud)

所以我的猜测是服务器正在忙于构建我的发票对象,因此它不会接受新的请求.以下是对此结论的补充:

   console.log("start slow call");  
    slow = $.ajax({  
        a very slow/heavy call  
        success:function(){  
            console.log('end slow call');  
        }  
    });  
    console.log('start fast call');  
    quick = $.ajax({  
        a very quick/lightweight call  
        success: function(){  
            console.log('end fast call');  
        }  
    });  
Run Code Online (Sandbox Code Playgroud)

当我同时执行这两个呼叫时,快速呼叫将无法完成,直到慢速呼叫完成:

控制台打印:

start slow call  
start fast call  
end slow call  
end fast call
Run Code Online (Sandbox Code Playgroud)

同时做两个使得快速通话需要5秒钟(根据firebug),当只做快速通话时它在150ms内完成

在所有这些之前,我已经猜到,多个ajaxcalls将以并行方式而不是串行方式完成.

abort() function: (having …
Run Code Online (Sandbox Code Playgroud)

php ajax session jquery

4
推荐指数
1
解决办法
1871
查看次数

如何在jQM页面之间存储变量?

如何在两个jQueryMobile页面之间传递像username这样的变量?

或者两个常规页面,将变量作为全局变得不起作用,因为在下一个包含它时,它会将变量设置为null.

如何在两个html页面之间传递变量全局变量?

javascript jquery jquery-mobile

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

Jquery中的可排序VS DragnDrop

当我尝试使用Jquery对一些数据进行排序时,我想我会使用拖放操作.后来,我访问了jQueryui网站.它们具有"拖放"功能和可排序功能.

现在我实现了"拖放"功能来对HTML表行进行排序,同时保存它们在数据库中的位置.

但现在我感到困惑:

  1. Sortable也可以执行相同的功能吗?
  2. Sortable是否仅适用于UL或OL或LI?它可以与Table Row一起使用吗?
  3. 拖放行时有什么区别?(交换位置),与Sortable(排序行)相比.这些不同的情况?我真的很困惑这些概念.
  4. 这是使用HTML表行进行排序的正确方法(通过Draggable和Droppable,就像我现在一样)?
  5. 有什么时候可以使用Sortable与Draggable/droppable

jquery jquery-ui jquery-ui-sortable jquery-ui-draggable jquery-ui-droppable

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

Windows 命令提示符创建但不将输出重定向到文件

我遇到的问题与我在这里看到的很多帖子相反。

我正在运行其他人编写的 perl 命令,尽管使用了“">”命令,但输出全部被强制显示在屏幕上。

Windows 清楚地知道我的意图,因为每次执行命令时我给出的文件名都是全新创建的,但日志文件的内容/大小为空且长度为 0 字节。

我的 perl 可执行文件与我的 perl 例程/.pl 文件位于不同的位置。

我尝试以管理员身份运行,但没有。

这并不是程序有问题。我的一些同事执行得很好,屏幕上没有任何输出。

一般语法是:

F:\git\repoFolderStructure\bin>
F:\git\repoFolderStructure\bin>perl alog.pl param1 param2 commaSeparatedParam3 2020-12-17,18:32:33 2020-12-17,18:33:33 > mylogfile.log

>>>>>Lots and lots of output I wish was in a file

Also attempted in the directory with my perl.exe and gave the path to my repo folder's bin.
Run Code Online (Sandbox Code Playgroud)

Windows 是否有一些奇怪的东西可以创建/阻止 > 运算符行为?

关键是:我做得ipconfig > out.txt很好,不过……没有任何内容写入屏幕。

感谢您提供有关我可以尝试改变行为的任何提示!

io perl command-line cmd io-redirection

0
推荐指数
1
解决办法
744
查看次数