javascript - Chrome 扩展,scrollTop=0 任何地方

标签 javascript google-chrome google-chrome-extension scroll

我正在做一个 chrome 扩展。我在使用 scrollTop 时遇到了一些问题(我希望这是“获取滚动高度”!)。

首先:结构:我有一个 list 、一个 html 页面、一个 javascript 和一个图像。

第二:瞄准。我试图向下滚动到底部,而不是转到顶部,然后重新开始滚动到底部……一个循环。 在 list 中我有这个:

{
 "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) 获取最大滚动高度,检查 scrolltop,如果相同,使用该代码。如果我这样做,扩展将始终位于顶部(稍微向下滚动后),就好像这些值始终(!!)相等一样。

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 作用于浏览器中的页面,我的 scrollTop 命令给我背景页​​面高度......这真的很糟糕。 你能帮我找到在“事件”页面末尾停止以执行“转到顶部”功能的方法吗?

编辑:

我发现了一些东西,如果我用这个

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

弹出一个窗口告诉我 acqual 标签 url。看着this我发现高度是选项卡属性,所以我使用:

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

但是窗口弹出并说“未定义”....我真的不知道我必须做什么才能检索实际的选项卡滚动位置。

最佳答案

终于解决了。 我设法完成了两个功能:

function scrolla(){
    chrome.tabs.executeScript({code: 'var x= document.body.scrollTop; document.body.scrollTop+=1; var y=document.body.scrollTop; if(x==y){document.body.scrollTop=0;}'});
}

chrome.browserAction.onClicked.addListener(function(tab) {

      var start = setInterval(function(){scrolla()},10);

    });

这将滚动页面直到结束,然后从顶部重新开始。 我很难做到这一点!哈哈解决了!!!!

关于javascript - Chrome 扩展,scrollTop=0 任何地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19472044/

相关文章:

google-chrome - 无法在非安全模式下启动 chrome?

javascript - 如何将我的数据转换为 React Native 的 SectionList 的正确格式?

javascript - 如何在 JavaScript/jQuery 中为粒子系统重用数组中的对象?

google-chrome - 页面滚动时 CSS3 动画打破固定定位

c# - 将 Cefsharp 作为 Chrome 运行

google-chrome-extension - Chrome devtools 扩展控制台

javascript - onMessageExternal.addListener 的回调可以是异步的吗?

javascript - 重新加载当前用户不会在 Firebase 身份验证中刷新 emailVerified 状态

javascript - String.fromCharCode() 在值 "126"之后不起作用

java - webdriver 使用浏览器版本