登录 立即注册

找到2240个回复 (用户: 老虎会游泳)

老虎会游泳 65楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,你喜欢用debian还是centos,我可以在韩国服务器上给你开一个docker容器让你运行任意web应用。

老虎会游泳 67楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,提供一下你的SSH公钥。

老虎会游泳 63楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,看过的图片就不会再想看了啊。

老虎会游泳 61楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,图片太高了,翻页手疼

Screenshot_20220731_161611.jpg(2.19 MB)

老虎会游泳 59楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,我需求很大

老虎会游泳 56楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,嗯,我确实想,但这就要我侵入viewer.js预览控件,给它添加点击事件。

老虎会游泳 54楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,我和viewer.js还有另一兼容问题待解决:用户没点击过的图片无法正常预览,翻页只能看到红字svg。

老虎会游泳 53楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,所以,把setTimeout做为加载顺序控制器是非常简单且有效的方法。在所有人都遵守这一规则的情况下,函数第二参数的数值就是加载顺序。

为了防止我默认的0占尽先机,我决定把自己的数值改成10,以便让出一些位置给想先加载的代码。setTimeout的单位是毫秒,50以内应该都不会引起用户察觉。

老虎会游泳 48楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,添加一点点延时就可以了,

setTimeout(() => {}, 1);

后续脚本继续增加延迟,就可以按顺序形成调用链。

Javascript是单线程的,所以只要延迟数值比我的数值(没给,默认为0)大,就会晚于我执行。

老虎会游泳 50楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,这不现实,我想你也看到了,在我的代码开始执行时,图片请求实际上已经发出了。如果我的代码晚于其他代码加载,浏览器就有更多机会下完整个图片。要想实现最好的效果,我的代码应该放在加载顺序的最开头,而这与viewer.js的要求显然是矛盾的。为了方便用户导入,我的代码不可能同时在插件列表的开头和结尾。

老虎会游泳 46楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,只要添加setTimeout,就可以在我的$(document).ready()先执行的情况下,让我的绑定后执行。

$(document).ready(() => {
    // 加这个延时,就可以保证晚于任何其他插件执行,以解决和viewer.js的冲突
    setTimeout(() => {
        document.querySelectorAll('.userimg').forEach(x => {
            // 替换掉虎绿林的点击查看大图事件
            x._onclick = x.onclick;
            x.onclick = function () {
                this.src = this._url;
                // 再次点击就触发虎绿林的点击查看大图事件
                x.onclick = x._onclick;
                // 恢复被抑制的图片外层链接
                if (x.parentNode._href) {
                    // 为了防止外层链接被立即触发,所以加个延时
                    setTimeout(() => x.parentNode.href = x.parentNode._href);
                }
            };
        });
    });
});
老虎会游泳 44楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,我的更新已经发布了,你可以看我的代码。

老虎会游泳 42楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,这就是我一直在说的方案,并且我已经做好了。

我确实想到一个解决方法,就是用setTimeout推迟onclick事件的绑定。
唯一的解决方法是在一切尘埃落定后重新绑定事件。

多个$(document).ready()的执行顺序是未知的,但是在$(document).ready()中使用setTimeout,那么就一定会晚于对方执行,即使延迟是0。

老虎会游泳 39楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,因为我的代码不在事件监听器和defer内,我的代码是同步js文件中的立即执行表达式,总是最先执行,所以不必关心执行顺序了。唯一的解决方法是在一切尘埃落定后重新绑定事件。

老虎会游泳 38楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,因为最开始网页插件在顶部,加载很卡。

https://hu60.cn/q.php/bbs.topic.103359.html?floor=3#3

老虎会游泳 35楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊$(document).ready()事件在DOMContentLoaded事件之后发生。

老虎会游泳 33楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,问题好像并不是同时触发,而是$(document).ready()事件在DOMContentLoaded事件之后发生。
不过现在研究这个问题无意义了,因为我的代码现在位于立即执行表达式中,总是最先执行。
我确实想到一个解决方法,就是用setTimeout推迟onclick事件的绑定。

$(document).ready(function () {
    document.querySelectorAll('.userimg, .userthumb').forEach(img => (img.onclick = function () {
        // 链接中的图片不预览
        if (0 !== $(this).parents('a').length) return;

        let elem = document.querySelector('body');
        let viewer = new Viewer(elem, {
            hidden: () => viewer.destroy(),
            filter(image) {
                return image.matches('.userimg, .userthumb');
            }
        });

        viewer.show()
    }));
});
老虎会游泳 32楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,既然MDN这么说,那么问题就不是执行顺序问题,而是onclickaddEventListener('click')互不影响,可以同时触发。

老虎会游泳 30楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊deferDOMContentLoaded之后执行,而且onclickaddEventListener('click')互不影响,可以同时触发。

老虎会游泳 28楼回复 老虎会游泳【网页插件】图片点击加载(测试版 r8) (2022-07-31//)

@无名啊,现在我把插件代码改到底部了,我的代码改成立即执行表达式了,加载时也不会闪一下再消失了。

请求确实发出了,但首先请求的是hu60.cn,那个302重定向给JS代码的执行和后续请求的取消保留了足够的时间,最终没有到file.hu60.cn的请求发出。

图片.png(105.61 KB)

下一页 上一页 (57 / 112页)

1月12日 15:54 星期一

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1