Javascript Chrome的移动仿真有多可靠?

Javascript Chrome的移动仿真有多可靠?,javascript,android,jquery,google-chrome,Javascript,Android,Jquery,Google Chrome,我有一个问题,如果我禁用触摸仿真或移动仿真,Chrome的移动仿真会很好地工作,这看起来只是有时会出错: 我问过很多安卓用户,他们可以在自己的本地设备上很好地滚动——这可能是因为Chrome中的错误移动模拟造成的吗?如果是这样,有人知道是什么让它恐慌吗 $(document).on('pagecontainershow', function () { // ISCROLL $('[data-iscroll]').each(function () { $(thi

我有一个问题,如果我禁用触摸仿真或移动仿真,Chrome的移动仿真会很好地工作,这看起来只是有时会出错:

我问过很多安卓用户,他们可以在自己的本地设备上很好地滚动——这可能是因为Chrome中的错误移动模拟造成的吗?如果是这样,有人知道是什么让它恐慌吗

$(document).on('pagecontainershow', function () {

    // ISCROLL

    $('[data-iscroll]').each(function () {
        $(this).wrapInner("<div class='scroller'></div>")
            .wrapInner("<div class='scroller_wrapper'></div>");

        var wrapper = $(this).find('.scroller_wrapper').first(),
            windowHeight = $(window).height();

        wrapper.height(windowHeight);

        var scrollerTest = new IScroll(wrapper.get(0), {
            eventPassthrough: false,
            scrollX: false,
            scrollY: true,
            preventDefault: false,
            scrollbars: true
        });


        scrollerTest.on('scrollEnd', function () {
            // For Android users to see whether it's iScroll or their native scroller
            $('.ui-page').css('background', '#ccc')
        });
    });

    document.addEventListener('touchmove', function (e) {
        e.preventDefault();
    }, false);


    // EMBEDLY
    var element = $('a');

    element.embedly({
        key: '',
        query: {
            maxwidth: 400,
            autoplay: true
        },
        display: function (data) {
            if (data.thumbnail_url) {
                element.html('<img src="' + data.thumbnail_url + '" />');
            }
        }
    }).on('click', function () {
        var data = $(this).data('embedly');
        $(this).replaceWith(data.html);

        return false;
    });
});

问题不在本例中的客户端仿真器中,而是在代码中

Embeddely将在iscroll初始化后加载内容,因此iscroll插件无法检索正确的高度

糟糕的是,Embeddely插件似乎没有回调函数,至少我找不到它说什么时候加载完内容

因此,我编辑了您的脚本,删除了高度设置,并插入了手动超时以加载iscroll

setTimeout(function(){
  $('[data-iscroll]').each(function () {
  ...
},1000);

在设备上,它可以正常工作,因为用户使用鼠标滚动时,他们使用普通浏览器滚动条,而不是伪iscroll滚动条——至少在滚动完成之前,他们使用滚动条,而不是传递到模拟器在触摸事件中使用的普通滚动条,这是一个浏览器模拟不能与移动浏览器相同的例子。

移动仿真器永远无法与真正的设备浏览器相比,它们在不同的操作系统中实现,您永远无法确定结果。您能确认这确实是Chrome的移动仿真器的故障吗?一点也不可靠!谢谢你的尝试,但恐怕还是不行。你有没有试过在Chrome上模仿谷歌Nexus10然后访问?Embeddely确实有一个回调函数,我在其中尝试刷新iScroll,但没有任何区别。拿出Embeddely代码,iScroll在移动仿真下工作正常。我相信需要.scroller\u包装上的高度。iScroll应该在加载后自动更新.scroller上的高度或scrollerTest.refresh。是的,我已经在varous chrome仿真上对其进行了测试,但我没有看到错误。可能是我不理解你所犯的真正错误,但如果我在你的手机上理解正确,例如,iscroll停止在实际总滚动的一半,问题是在Chrome仿真中,在嵌入式执行后,不可能滚动iscroll滚动器。请注意,还有一个Chrome滚动条,可以单击并向下拖动,但这是可以忽略的。