我用jQuery和jFancyTiles编写了一个小图片幻灯片,可以在这里看到:
它在firefox和IE中按预期工作,但不是铁/铬.问题似乎在文件的时间.已经在铬:
在第76行中,活动类被设置为标题图像右下角的编号圆形按钮.这有效!
在第83行中,通过调用花式拼贴功能来改变图像,这在铬中不起作用,至少在此时不起作用.
当我通过ctrl-shift-j打开iron_js_console并手动调用该函数时,一切正常.
此外,如果我等待10秒,它甚至会进展到下一个图像,在所有浏览器中,不需要以前的操作.
对fancytiles的第一次调用不适用于铁/铬.这是在jquery的document.ready事件中调用的.
//我能做什么?
我有一个名为"text.html"的html页面
<html>
<body>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="js/Photos.js"></script>
<script type="text/javascript" src="js/Animations.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Photos.js和Animations.js都以"$(document).ready()"开头
//Javascript File Photos.js
$(document).ready(function() {
//My code here ....
});
//Javascript File Animations.js
$(document).ready(function() {
//My code here ....
});
Run Code Online (Sandbox Code Playgroud)
如果我在单个 html页面中使用多个 $(document).ready(function(){ 是否重要?
提前致谢
从网络面板看,当您通过Modernizr.load加载脚本时,它实际上并不会阻止$(document).ready().
所以理论上,假设我通过Modernizr添加json2.js,而另一个开发人员试图在$(document).ready()中使用JSON.parse,他们的脚本实际上可能会因为竞争条件而中断.
是否可以在不试图警告所有代码签到的情况下解决这个问题?
我想是新手问题。
以下代码是我在文档就绪时调用的函数的一部分。它旨在在鼠标移动时永久返回当前鼠标位置的值。
正在发生的奇怪事情:在文档就绪时移动鼠标不会将任何内容记录到控制台。我知道 mouse_monitor 函数可以工作,因为我在另一个“mousedown”事件监听器中使用了这个函数,然后它将当前鼠标位置记录到控制台。
//Mouse Monitor
canvas.addEventListener('mousemove', mouse_monitor, false);
//Mouse Monitor Request
var mouse = new Array();
var mouse_monitor = function(e) {
var canvasOffset=$("#canvas").offset();
var offsetX=canvasOffset.left;
var offsetY=canvasOffset.top;
mouse.x = e.pageX - offsetX;
mouse.y = e.pageY - offsetY;
return mouse;
console.log(mouse);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试对弹出窗口的DOM执行操作,但由于某种原因,ready事件会在弹出窗口中立即触发,然后才会出现DOM中的任何内容.
我知道jQuery可以通过使用上下文访问弹出窗口的DOM,并且我可以设法通过使用setTimeout延迟任何操作直到合理的时间量已经过去.
(function ($) {
$(function () {
var popup = window.open('/test');
// JSFiddle 404 page
$(popup.document).ready(function () {
// Should fire when the DOM of the 404 page has loaded...
$('h2', popup.document).css('color', '#FF0000');
// Change the color of the header to red.
console.log($('h2', popup.document).length);
// Should log 1
// Logs 0, though, because this function fires immediately, before the DOM loads.
});
setTimeout($.proxy(function () {
// This will definitely fire after the DOM of …Run Code Online (Sandbox Code Playgroud) 在呈现页面之前隐藏元素的首选方法是什么?$(document).ready()适用于firefox,但有时(连接到服务器似乎是一个主要问题)它在Internet Explorer中落后了一点; 该元素显示,并在病房后不久隐藏.即:在执行$(document).ready()中的代码之前呈现页面.
现在我一直在查看之前有关类似问题的问题,但据报道这些问题在1.3.1中得到解决.然而,我使用jQuery 1.3.2并遇到这种行为(在IE6,IE7和IE8中).
一种可能的选择是默认通过css隐藏它,但这会使它显示依赖于启用了javascript.我还不愿意这样做.
我也尝试将我的javascript移到/ body标签上方,这似乎也没有帮助.
我正在使用一些使用JQuery的$(document).ready功能来设置jqGrid实例的代码.即使通过后退按钮单击返回页面,似乎也会触发代码.
在精简测试页面中,通过后退按钮点击时不会调用类似的就绪函数:
<html>
<head>
<script type="text/javascript" src="/JQuery/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
alert('ready');
})
</script>
</head>
<body>
<p>Index View</p>
<a href="detail.html">Detail</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
你能给我一些关于在哪里寻找导致这种行为差异的原因的提示吗?
我在这个问题的答案中找到了一些相关信息,但是带有过度活动就绪事件的页面没有为卸载注册的事件处理程序.
我正在使用rails 3应用程序,我想使用可排序列表.我正在使用此处显示的方法.我的应用程序使用JQuery,我的应用程序布局中包含一个js文件,用于调用$(document).ready()设置一些可视化内容.这似乎工作正常.
但是,当我尝试$(document).ready()在我的视图模板中调用content_for :javascript以设置可排序列表时,该代码永远不会触发.我的yield :javascript布局文件中有必要的调用,如果我加载页面并查看源代码,一切看起来都很好.但是代码永远不会运行 - 即这个$(document).ready()永不触发的实例.
我刚刚发现,如果我替换$(document).ready(),$(window).load()那么我的js代码运行.
所以我的问题是:为什么会$(document).ready()失败并且$(window).load()有效?
这有效:
<% content_for :javascript do %>
<script>
$(window).load(function(){
alert('it works!');
});
</script>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这不起作用
<% content_for :javascript do %>
<script>
$(document).ready(function(){
alert('it works!');
});
</script>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这是布局
<!DOCTYPE html>
<html>
<head>
<title><%= content_for?(:title) ? yield(:title) : "Untitled" %></title>
<!-- Reset Stylesheet -->
<%= stylesheet_link_tag "reset" …Run Code Online (Sandbox Code Playgroud) 我遇到了一个问题,我的应用程序存在于iframe中,而且它是从外部域调用的.当iframe正确加载时,IE9不会触发加载事件,所以我认为我使用setTimeout来调查页面.
无论如何,我想看看我的setTimeout通常需要什么持续时间来完成,所以我希望能够记录setTimeout从我的回调中触发的延迟,但是我不知道如何将该上下文传递给它所以我可以记录下来.
App.readyIE9 = function() {
var timings = [1,250,500,750,1000,1500,2000,3000];
for(var i = 0; i < timings.length; i++) {
var func = function() {
if(App.ready_loaded) return;
console.log(timings[i]);
App.readyCallBack();
};
setTimeout(func,timings[i]);
}
};
Run Code Online (Sandbox Code Playgroud)
我一直在IE9的控制台中获取LOG:undefined.
完成此任务的正确方法是什么?
谢谢
javascript jquery closures document-ready internet-explorer-9
我想从服务器获取一些数据并用JavaScript将其写入全局数组.然后在文档就绪中我想使用这个数组来创建一些新元素(选项).我应该有这个数据的全局数组,因为在第一次加载客户端后可以使用这个数据修改用户界面.
$(document).ready(function () {
UseAjaxQueryForFillGlobalArray();
MakingInterfaceUsingGlobalArray();
});
Run Code Online (Sandbox Code Playgroud)
但我有奇怪的行为,当我调试页面时,我可以看到MakeInterfaceUsingGlobalArray方法首先工作,刚刚通过AJAX获取数据后,方法UseAjaxQueryForFillGlobalArray,我没有新的接口(html选项)加载数据.
如果我喜欢这样:
UseAjaxQueryForFillGlobalArray();
$(document).ready(function () {
MakingInterfaceUsingGlobalArray();
});
Run Code Online (Sandbox Code Playgroud)
然后在Firefox工作正常,但在第一次加载时其他网络浏览器不正确(例如通过链接转到此页面).但是如果我用F5刷新,我有正确的用户界面,它通过AJAX加载到全局JS数组.
怎么解决?也许我使用完全不正确的方式?
评论后添加:
这是我的ajax功能:
function UseAjaxQueryForFillGlobalArray(){
var curUserId = '<%= Master.CurrentUserDetails.Id %>';
var curLocale = '<%= Master.CurrentLocale %>';
$.ajax({
type: "POST",
url: "/segment.aspx/GetArrayForCF",
data: '{"userId":"' + curUserId + '","curLocale":"' + curLocale + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
//here is I doing parse my string from server and fill arrays.
}
});
}
Run Code Online (Sandbox Code Playgroud) document-ready ×10
jquery ×9
javascript ×5
ajax ×1
back-button ×1
closures ×1
connection ×1
html ×1
modernizr ×1
mousemove ×1
slideshow ×1
window.open ×1