jQuery $(document).ready () 触发两次
jQuery $(document).ready () fires twice
我一直在网上筛选,试图找出这里发生的事情,但我无法得到具体的答案。
我的网站上有一个$(document).ready
,无论其中的代码如何,它都可以多次运行。
我已经阅读了 jQuery 的错误报告,了解如果语句中发生异常,.ready
事件将如何触发两次。但是,即使我有以下代码,它仍然运行两次:
$(document).ready(function() {
try{
console.log('ready');
}
catch(e){
console.log(e);
}
});
在控制台中,我看到的所有内容都记录了两次"就绪"。是否有可能另一个带有异常的 .ready 会导致问题?我的理解是所有 .ready 标签都彼此独立,但我似乎找不到它在哪里发挥作用?
这是该网站的头块:
<head>
<title>${path.title}</title>
<meta name="Description" content="${path.description}" />
<link href="${cssHost}${path.pathCss}" rel="stylesheet" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="media/js/fancybox/jquery.fancybox.pack.js" type="text/javascript" ><!-- --></script>
<script src="/media/es/jobsite/js/landing.js" type="text/javascript" ><!-- --></script>
<script src="/media/es/jobsite/js/functions.js" type="text/javascript"><!-- --> </script>
<script src="/media/es/jobsite/js/jobParsing.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="/media/es/jobsite/js/queryNormilization.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery/jquery.metadata.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery/jquery.form.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.7/jquery.validate.min.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery.i18n.properties-min.js" type="text/javascript" charset="utf-8"><!----></script>
<script type="text/javascript" charset="utf-8">
function updateBannerLink() {
var s4 = location.hash.substring(1);
$("#banner").attr('href','http://INTELATRACKING.ORG/?a=12240&c=29258&s4='+s4+'&s5=^');
}
</script>
</head>
不要注意 JSP 变量,但正如你所看到的,我只调用函数.js文件一次(这是 .ready 函数存在的地方)
ready 事件不能触发两次。更有可能发生的事情是,您的代码正在移动或操作代码中包含的元素,从而导致浏览器重新执行脚本块。
这可以通过在<head>
中或结束</body>
标记之前包含脚本标记并且不使用$('body').wrapInner();
来避免。 使用 $('body').html($('body').html().replace(...));
具有相同的效果。
这也发生在我身上,但我意识到由于合并错误,该脚本已被包含两次。
我使用剑道UI时...调用弹出窗口将导致 document.ready
事件多次触发。简单的解决方案是设置一个全局标志,使其只运行一次:
var pageInitialized = false;
$(function()
{
if(pageInitialized) return;
pageInitialized = true;
// Put your init logic here.
});
这有点像黑客,但它有效。
确保不要包含两次JS文件。那是我的情况
你可以考虑使用
window.onload
而不是
$(document).ready
尝试将其放入您的函数中.js以防止它被执行两次:
var checkit = window.check_var;
if(checkit === undefined){ //file never entered. the global var was not set.
window.check_var = 1;
}
else {
//your functions.js content
}
但是,我建议您多研究一下,看看您第二次打电话在哪里。
当我尝试刷新部分时,我遇到了类似的问题。我调用了返回操作结果而不是返回 PartViewResult。操作结果导致我的 ready() 运行两次。
当您在 html 中添加两次相同的控制器时,可能会遇到此问题。
例如:
[js]
app.controller('AppCtrl', function ($scope) {
$(document).ready(function () {
alert("Hello");
//this will call twice
});
});
[网页]
//controller mentioned for the first time
<md-content ng-controller="AppCtrl">
//some thing
</md-content>
//same controller mentioned again
<md-content ng-controller="AppCtrl">
//some thing
</md-content>
我今天遇到了类似的问题。在我的情况下,<button type="submit">
导致$(document).ready(...)
事件再次触发。将代码更改为<button type="button">
为我解决了问题。
请参阅提交按钮后再次调用的文档.ready函数?
在我的例子中,$(document).ready由于糟糕的CSS而被触发了两次,请检查CSS的任何部分是否有background-image: url('');
如果 iframe 没有显示任何内容并且用于其他原因(例如上传文件而不重新加载),您可以执行以下操作:
<iframe id="upload_target" name="upload_target" style="width:0;height:0;border:0px solid #fff;"></iframe>
请注意,不包括 src,这会阻止文档上的第二个就绪触发器。
我在Windows.load函数上遇到了这个问题,执行了两次:原因是因为我在主页中引用了相同的javascript文件以及.net用户控件。当我删除主页中的引用时,加载函数只执行了一次。
今天早上我遇到了这件事......以及我在仔细检查我最近操作的 jquery 模态表单中的一些 html 代码后发现,我不小心删除了一个结束表标签。 我还没有花时间完全理解为什么这会导致 document.ready 函数被调用两次,但它确实如此。 添加结束表标记解决了此问题。
jQuery JavaScript Library v1.8.3(是的,它是一个遗留应用程序)
我的问题是我的 index.cshtml 文件和 _Layout.cshtml 文件中都有引用我的 JS 文件的标签。 这导致 document.ready 函数触发两次,从而导致数据表爆炸。
- Meteor Router数据函数被调用两次
- 从MySQL数据库中获取输入数据需要两次页面刷新
- Module.start()已激发两次
- Jquery点击事件必须点击两次
- Append元素在运行两次函数后不显示
- 防止双击执行两次jQuery post请求
- 我必须点击两次才能激活任何按钮操作(离子/角度)
- 单击jQuery会激发两次
- 如何避免在树上走两次
- button.单击两次删除附加操作后不工作
- 由于$compile,Javascript(Angular)嵌套指令加载了两次
- 单击元素两次后执行操作
- 文件上传文档.ready .on('submit') 提交了两次
- jQuery 和 document.ready() 触发两次
- jQuery $(document).ready () 触发两次
- jquery ready 函数在我单击锚标记时执行两次
- JQuery wrapInner 触发器 jQuery(document).ready 两次.
- $(document).ready(function(){} jquery被调用两次
- $(document).ready和Window onload导致事件触发两次
- Angular.element (ready)函数在cordova中被调用两次