Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript iOS无法在第一页加载时操作jQuery DOM更改_Javascript_Jquery_Ios_Iphone - Fatal编程技术网

Javascript iOS无法在第一页加载时操作jQuery DOM更改

Javascript iOS无法在第一页加载时操作jQuery DOM更改,javascript,jquery,ios,iphone,Javascript,Jquery,Ios,Iphone,我对iOS上的Safari有一个奇怪的问题。 我正在使用jQuery操作几个div,移动它们,包装它们,并赋予它们动态高度。在每个浏览器上,这些更改在第一页加载期间都能正常工作,在Safari上,有时是,有时不是 基本上在Safari中,它加载页面而不应用任何更改,然后如果我不断刷新页面,它就永远不会工作,但是如果我在地址栏上重新输入url并点击“回车”,那么它就工作了 现在,我解决了将触发那些DOM操作的函数包装在setTimeout函数中的问题,并给它400的延迟。所以现在它在启动函数之前要

我对iOS上的Safari有一个奇怪的问题。 我正在使用jQuery操作几个div,移动它们,包装它们,并赋予它们动态高度。在每个浏览器上,这些更改在第一页加载期间都能正常工作,在Safari上,有时是,有时不是

基本上在Safari中,它加载页面而不应用任何更改,然后如果我不断刷新页面,它就永远不会工作,但是如果我在地址栏上重新输入url并点击“回车”,那么它就工作了

现在,我解决了将触发那些DOM操作的函数包装在setTimeout函数中的问题,并给它400的延迟。所以现在它在启动函数之前要等待400毫秒,这样它就可以工作了,但我不太喜欢它。我想知道你们是否知道一个更好的系统

我的代码:

    $('.wrap-services, .wrap-banner-cta, .wrap-logos, footer').wrapAll('<div class="fixer"></div>');
    $('.fixer').insertAfter('.content');

    function getHeight() {

        var imgOffset = $('.wrap-hero-home picture.splash-main img').offset().top;
        var fixerHeight = $('.fixer').height();
            imgHeight = $('.wrap-hero-home picture.splash-main img').height();

        $('.fixer').css('top', (imgOffset + imgHeight) + 50);

        $('.container').height((imgOffset + imgHeight + fixerHeight) + 50);
    }   


//this is what I use now to prevent that issue
setTimeout(getHeight, 400);
$('.wrap services、.wrap banner cta、.wrap logo、footer').wrapAll('');
$('.fixer').insertAfter('.content');
函数getHeight(){
var imgOffset=$('.wrap hero home picture.splash-main img').offset().top;
var fixerHeight=$('.fixer').height();
imgHeight=$('.wrap hero home picture.splash-main img').height();
$('.fixer').css('top',(imgOffset+imgHeight)+50);
$('.container')。高度((imgOffset+imgHeight+fixerHeight)+50);
}   
//这就是我现在用来防止这个问题的方法
设置超时(getHeight,400);

感谢

从技术上讲,jQuery的绑定方法已被弃用,因此您可能应该在上使用
,就像他们建议的那样:

$(window).on('load', function(){
    //Do something
});
请参阅本页中与弃用相关的注释:


如果您使用的是旧版本的jQuery,我想这无关紧要,那么继续执行
bind

是否只需要完全加载页面和所有资产?您可以这样做:
$(window.load(function(){/*do something*/})我已经在$(文档)中启动了该函数。准备好了吗。。。不管怎么说,这个问题可能是因为我不知道为什么在iOS中,有时它会在加载DOM之前运行这个函数。我不认为应该将内部文档准备好,但外部文档本身就是我一直使用的方式。也许值得一试。如果我把函数从文档中移出,它就完全不起作用了。我试图用$(窗口)包装它。加载。。。但是它根本不起作用,也许你应该显示一些HTML和JS。毕竟,这是堆栈溢出,一个获取代码帮助的站点:)