我需要在加载dom后打开一个窗口,并将y位置滚动到元素,最好是在屏幕中心。我查看了堆栈溢出,并将一些东西与我找到的位置放在一起。
这个问题是它使用计时器来查看我的元素是否可用,而且它非常慢 - 改变间隔时间根本不会影响速度。此外,它在IE中不起作用,我需要它。想到这个?
linkToComment: function(e){
var link = 'https://****';
var commentId = 21
var w = window.open(link);
var interval = setInterval(function(){
if ( $(w.document.body).find("div[data-commentoriginalid=" + commentId + "]")) {
$(w.document.body).animate({
scrollTop: ( $(w.document.body).find("div[data-commentoriginalid=" + commentId + "]").offset().top)
},500);
clearInterval(interval);
}
}, 500)
},
答案 0 :(得分:0)
尝试此而不是间隔:
$(w.document).ready(function () {
$(w.document.body).animate({
scrollTop: ( $(w.document.body).find("div[data-commentoriginalid=" + commentId + "]").offset().top)
},500);
});
但我不明白你为什么要从父窗口进行滚动,而不是将javascript添加到打开的窗口......
答案 1 :(得分:0)
您是否可以访问子窗口中的代码/源代码?如果我这样做,我会在子窗口中添加一个onload处理程序,而不是试图从父窗口控制它。如果需要将变量传递给父项中的子项,则可以使用查询字符串或哈希参数。
e.g。 mysite.com#2345
然后在子窗口中选择该id,选择具有该ID的元素并滚动到它。
请记住 - 当子窗口打开时,用户可以关闭父窗口,这意味着计时器将被终止。