Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展,scrollTop=0 enywhere_Javascript_Google Chrome_Google Chrome Extension_Scroll - Fatal编程技术网

Javascript Chrome扩展,scrollTop=0 enywhere

Javascript Chrome扩展,scrollTop=0 enywhere,javascript,google-chrome,google-chrome-extension,scroll,Javascript,Google Chrome,Google Chrome Extension,Scroll,我正在做一个chrome扩展。我对scrollTop有一些问题(我希望这是“获取滚动高度”!) 第一:结构:我有一个清单、一个html页面、一个javascript和一个图像 第二:目标。我正在尝试向下滚动到底部,而不是转到顶部,然后重新启动以滚动到底部。。一个循环。 在清单中,我有以下内容: { "background": { "page": "scroll.html" }, "browser_action": { "default_icon": "icon.

我正在做一个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>
我的分机“工作”。但我并没有做我想做的一切:

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

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

1) 获取最大滚动高度,使用scrolltop进行检查,如果相同,则使用该代码。如果我这样做,扩展将始终位于顶部(向下滚动一点之后),就好像这些值总是(!!)相等

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

2) 变量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);
})
一个弹出窗口告诉我acqual标签的url。查看我发现高度是选项卡属性,因此我使用:

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

但是窗口弹出并说“未定义”。。。。我真的不知道要检索实际的选项卡滚动位置该怎么做。

您似乎在混合背景页面代码和实际的网页代码

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

关于2-我不确定你在那里的意思

从后台页面在实际网页中执行JavaScript的正确方法是使用。或者你可以只使用一个(你甚至可能不需要背景页?)

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

1)您不应该使用tabs.update来插入javascript:URL,而应该使用tabs.executeScript来插入代码。javascript:URL不太安全,因为它们直接将代码注入网页世界,而executeScript将代码注入内容脚本的单独世界

2) 您可以使用tabs.executeScript返回值,但前提是您运行的代码是同步的。只需在代码的最后一个语句中列出返回值(无返回关键字),例如
chrome.tabs.executeScript(tabid,{code:“var a=34;location.href;”},函数(url){console.log(url)})
将location.href的值返回回调函数

3) 您应该能够通过设置elem.scrollTop=value来滚动。值的范围从0到元素高度。如果无法使用document.body.scrollTop滚动,则可能是页面中需要滚动的另一个元素。

最终解决。 我成功地完成了2个功能中的所有功能:

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;}'});
}

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

嗨,欢迎光临。我想澄清一点:您是想滚动一个背景页面还是用户当前正在查看的页面?如果我记忆犹新,您可能正在使用
scrollTop
访问一个不可编辑的值。如果你想修改这个值,我相信你必须调用一个函数。不过我忘了它是什么:(.祝你好运!你好@Qantas94Heavy,谢谢。我实际上是在滚动可视页面,而不是背景页面。我能够滚动它,我已经完成了。问题是:我如何看到用户看到的页面的最大scollTop值?因为我没有试图编辑“scrollTop”值,因为我已经能够用我发布的代码tpo做到这一点。无论如何,谢谢,但我是这样做的…内容脚本由背景html页面注入,并使用chrome.tab函数在页面上操作。我想没有人理解(可能我是误导)我的问题:我找不到活动页面的scrolltop值…我重复一遍,只有这个,我的扩展有效!它可以滚动活动页面!无论如何谢谢^^^使用chrome.tabs.update和JavaScript URL不是正确的方法。使用executeScript,这正是它的目的。如果没有人理解你的问题,那么试着问得更清楚。然后切掉它有一点,它太长了,这可能会使它更不清楚。而且您所显示的代码实际上不应该获取页面的滚动顶部,看起来您总是试图获取背景页面的滚动顶部。也许一个更完整的示例会更有帮助。
    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);

    });