【问题标题】:Chrome Extension - How to capture Scroll Position on open tabsChrome 扩展 - 如何在打开的选项卡上捕获滚动位置
【发布时间】:2014-11-12 16:53:51
【问题描述】:

我目前通过在内容脚本(见下文)中运行它并注入 JQuery 来捕获选项卡上的滚动位置。

问题如何将滚动捕获应用到所有打开的标签,而不仅仅是我所在的当前标签? 我在下面的尝试仅适用于当前标签。

由于无法访问内容脚本中的 chrome.tabs API,因此不确定如何在所有选项卡中迭代 for 循环。我是否通过不断跟踪滚动捕获来解决这个错误,并且应该使用 background.js 仅在某个事件上调用 content_script 函数?

谢谢!

ma​​nifest.json

{
"manifest_version": 2,
"name": "ScrollPosition",
"version": "1.0",
"background": {
"page": "background.html"
},
"content_scripts": [
{ "matches": ["http://*/*", "https://*/*"],
"js": ["jquery-1.11.1.min.js","content_script.js"]}
],
"browser_action": {
    "default_icon": {
        "19": "images/icon19.png",
        "38": "images/icon38.png"
    },
    "default_popup": "popup.html"
},
"permissions": [
    "tabs",
    "windows",
    "<all_urls>",
    "chrome://favicon/",
]
}

content_script.js

var scrollPosition = 0;

function scrollPos() {
  $(document).scroll(function(){
    scrollPosition = $(this).scrollTop();  
    console.log('your scroll position is: '+scrollPosition);
  });
};

window.addEventListener("load", scrollPos);

【问题讨论】:

  • guessed correctly。只有内容脚本可以访问该选项卡:在后台页面中运行$(this).scrollTop() 指的是后台页面本身。请尝试以某种方式拆分您的问题:目前尚不清楚我们究竟应该回答什么。一次只做一个问题,您总是可以创建多个问题。
  • @Xan 感谢您的快速回复并澄清了问题。似乎标题不正确,因此也进行了更新。再次感谢您的帮助。

标签: javascript jquery google-chrome-extension scrolltop message-passing


【解决方案1】:

您可以使用后台脚本遍历所有选项卡并注入自定义脚本。您可以使用chrome.tabs.query 遍历后台页面中的所有选项卡。您可以使用 chrome.tabs.executeScript 将脚本注入选项卡。现在,您只需要从内容脚本中将 send a message 发送到后台脚本,就可以开始了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-04
    • 2015-12-05
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多