C# jQuery浏览器差异
由于我刚刚开始从事IT工作(实习大约在2个月前开始),我将尽力为您提供帮助我所需的所有信息 我有一个MVC4应用程序,它使用LongPolling从服务器接收新数据(在我的例子中是消息)。根据消息的类型,它将在客户端对其进行不同的处理C# jQuery浏览器差异,c#,javascript,jquery,browser,C#,Javascript,Jquery,Browser,由于我刚刚开始从事IT工作(实习大约在2个月前开始),我将尽力为您提供帮助我所需的所有信息 我有一个MVC4应用程序,它使用LongPolling从服务器接收新数据(在我的例子中是消息)。根据消息的类型,它将在客户端对其进行不同的处理 这些消息中有一种是系统消息: 我有两种看法。一个视图有一个按钮,另一个只有一些文本。 然后点击按钮 设置控制器中的某些属性,并 强制在另一个视图上重新加载页面,生成新内容(例如某些文本框) 现在,如果我在一个新窗口中打开这两个视图,结果会很好(在Firefox、
这些消息中有一种是系统消息: 我有两种看法。一个视图有一个按钮,另一个只有一些文本。
然后点击按钮
但如果我在一个新标签中打开它们,它将只在IE和Chrome中工作。Firefox将接收消息,但不会调用回调方法
$(文档).ready(函数(){
ReadChat();
})
这将初始化对ReadChat()的第一个调用。正如我前面提到的,它在IE和Chrome的选项卡中工作得非常好,但只在Firefox的新窗口中工作。
如果我检查FireBug,服务器的响应就会到达,我可以查看JSON内部。它只是因为某种原因没有调用回调 我的第一个想法是,并不是所有的东西都已加载,我在第一次调用中添加了一个超时 如果我这样写:
$(文档).ready(函数(){
设置超时(ReadChat,1000);
}
它也适用于Firefox,只要我不将其设置为低于~1000
有人遇到过同样的问题吗?为什么Firefox会在这里产生不同 编辑: 函数ReadChat(){ $.fn({ receiveURL:'@Url.Action(“myAction”、“myMethod”), myID:“@Model.myID”, 回调:函数(数据){ $.each(数据、消息、函数(k、v){ 如果(v.kind==3){ 位置。重新加载(true); } }); ReadChat(); },超时:25000 }“读”); } 在$.fn.messaging中,将使用给定参数调用read函数: 编辑2: 正如Diesel337所说,我现在正在使用 在新选项卡中打开: 做了这个调整后,我对它进行了更多的测试,乍一看它工作得很好。然后我注意到,如果我单击视图,应该在单击按钮之前重新加载,它将不工作。(收到消息,但没有调用回调函数) 另一方面,如果我忽略了视图,那么应该重新加载该视图,并直接单击按钮,页面将重新加载而不会出现问题 这听起来很奇怪,我知道,但如果我在点击按钮之前不看视图,它就会工作 我还为此提交了一份关于bugzilla的新错误报告。您是否尝试使用$(this)而不是$(document) 或
事实证明,引起这个问题的不是Firefox,而是Firebug。
我今天再次尝试重现这个错误,幸运的是Firebug没有激活,所以它工作得很好。
在再次打开它以获取有关原因的任何信息后,我得到了相同的错误
注意:如果您正在开发需要对$(document.ready()进行AJAX调用的东西最好不要激活Firebug,因为它会因为某种原因而把它搞砸。经过更多的测试后,我意识到它在选项卡中可以工作,但当我单击选项卡时除外,该选项卡首先执行此AJAX调用。如果我先单击发送消息的选项卡,则工作正常。
$.post(receiveURL, { id: myID }, function(response) {
if($.isFunction(settings.callback) {
settings.callback(response);
}
}
$(this).ready(function () {
ReadChat();
});
$(this).ready(function() {
ReadChat();
});
$(function() {
ReadChat();
});