这是调用 insertText() 函数的 background.js 条目。
$(document).ready(function() {
// Handler for .ready() called.
InsertText();
});
此函数调用仅在网站第一次加载时发生。我当前正在滚动的网页中的任何后续加载/更改,都不会被调用。我哪里错了?我是否必须为此编写一个选项卡更改侦听器?
这是调用 insertText() 函数的 background.js 条目。
$(document).ready(function() {
// Handler for .ready() called.
InsertText();
});
此函数调用仅在网站第一次加载时发生。我当前正在滚动的网页中的任何后续加载/更改,都不会被调用。我哪里错了?我是否必须为此编写一个选项卡更改侦听器?
您绑定到错误的事件。ready
在加载DOM时触发,如果你想在页面滚动时做一些事情,那么绑定到scroll
:
$(window).scroll(function(){
// code here
});
这种行为是正确的。$(document).ready
当 DOM 准备好时被调用,并在函数中执行代码:http: //api.jquery.com/ready/
当页面准备好并构造 DOM 时(大多数情况下,在大多数浏览器中),这只会在每个页面触发一次。
您可以对特定事件触发操作,包括加载。因此,如果您知道应该加载哪些内容并且想要在其上触发某些内容,您可以试试这个 (http://api.jquery.com/load/):
$("#imageID").load(function() {
// image has loaded
});
如果您专门针对滚动,可以使用 jQuery 滚动方法:http ://api.jquery.com/scroll/
但请注意调用滚动的频率,您可能希望在用户停止滚动后延迟事件触发 x 毫秒:)。
背景页面执行和内容脚本执行环境是两种不同的变体,因此必须使用某种通信机制
实现您的用例的示例脚本
使用清单文件注册 chrome 扩展元素的所有部分
{
"name":"Content to Background Script",
"description":"This Extension invokes background Script function whenever there is a scroll event",
"version":"1",
"manifest_version":2,
"background":{
"scripts":["background.js"]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["myscript.js"]
}
],
"permissions":["<all_urls>"]
}
在此处注册事件侦听器和函数
//Some trivial Function
function _someFunction() {
console.log("I am invoked ...");
}
//Handler when message is sent from Content Scripts
chrome.extension.onMessage.addListener(function (message, caller, handler) {
if (message["callTo"] == "_someFunction") _someFunction();
});
这是一个简单的示例内容脚本
//Look for scroll event
document.addEventListener("scroll", function () {
console.log("Page is Scrolled hence requesting background page to execute my function");
//Request Background page for execution of a function
chrome.extension.sendMessage({
"callTo": "_someFunction"
});
});
如果您需要更多信息,请与我们联系。