我正在扩展Chrome。而且我对scrollTop有一些问题(我希望这是“获取滚动高度”!)。

首先:结构:我有一个清单,一个html页面,一个javascript和一个图像。

第二:瞄准。我试图向下滚动到底部,而不是向上滚动,然后重新开始滚动到底部。
在清单中,我这样做:

{
 "background": {
       "page": "scroll.html"
 },
 "browser_action": {
       "default_icon": "icon.png",
       "default_title": ""
 },
 "content_scripts": [ {
       "js": [ "scroll.js" ],
       "matches": [ "http://*/*", "https://*/*" ]
 } ],
 "description": "Auto Scroll. UpDownUp!",
 "icons": {
       "128": "icon.png",
       "48": "icon.png"
 },
 "manifest_version": 2,
 "name": "Auto Scroll, UpDownUp",
 "permissions": [ "tabs", "http://*/*", "https://*/*" ],
 "version": "0.2.3"
}


如您所见,我没有弹出的HTML。

在我的html页面中,我这样做:

<html>
<head>
<title>Auto Scroll</title>
</head>
<body >
<script src="scroll.js"></script>
</body>
</html>


在我的scroll.js中,有几个函数可以开始滚动,并且滚动速度更快。
但是我不需要引用所有这些代码(164行)。

我只是有很多垃圾,最后只做以下简单的事情:

chrome.tabs.update(id, {'url': 'javascript:document.body.scrollTop+=1;'});


我的扩展名“有效”。但是我还没有完成我想要的一切:

该扩展名只会下降(而且确实如此!)。我希望当我在页面底部时,扩展将执行:

chrome.tabs.update(id, {'url': 'javascript:document.body.scrollTop=0;'});


我想:

1)获得最大滚动高度,检查滚动顶部,如果相同,请使用该代码。如果我这样做,则扩展名将始终位于顶部(向下滚动几下),就好像这些值始终等于(!!)。

if(document.body.scollTop==document.body.Height)
{
chrome.tabs.update(id, {'url': 'javascript:document.body.scrollTop=0;'});
}


这是第一次尝试的结果...但是不起作用。

2)var y = document.body.scrollTop->滚动-> z = document.body.scrollTop。如果y == z,则我处于最底下,然后转到顶部...这不起作用,y和z始终相等!!!

每次使用时我都会使用一个警报(值)

chrome.tabs.update(id, {'url': 'javascript:document.body.scrollTop+=1;'});


设置

alert(document.body.scollTop);


并弹出显示为“ 0”。总是...我关闭弹出窗口,扩展名进一步向下滚动,然后弹出窗口出现,并且再次为0!

好吧...我不是我的错!

我有个主意:我的javascript是由背景页面加载的,而javascript则作用于浏览器中的页面,mybe scrollTop命令给我背景页​​面的高度...这确实很糟糕。
您能帮我找到在“活动”页面结束时停止执行“转到顶部”功能的方法吗?

编辑:

我用这个找到了

chrome.tabs.getSelected(null, function(tab) {
    alert(tab.url);
})


弹出一个窗口,告诉我相应的标签网址。查看this,我发现高度是选项卡的属性,因此我使用:

    chrome.tabs.getSelected(null, function(tab) {
    alert(tab.height);
})


但是窗口弹出并说“ undefined” ..我真的不知道要检索标签的实际滚动位置该做什么。

最佳答案

您似乎在混合后台页面代码和实际的网页代码。

1绝对不起作用,因为您正在查询背景页面的值而不是实际网页的值(条件),然后在实际网页中执行代码(设置scrollTop)。

关于2-我不确定您的意思是...

从后台页面在实际网页中执行JavaScript的正确方法是使用chrome.tabs.executeScript。或者,您可以只使用content script(您可能甚至不需要背景页面?)。

一旦确定在实际网页而不是在后台网页中执行了所有代码(即查询和更改实际网页中的内容),代码通常就可以工作了。

10-07 19:33
查看更多