我不擅长JS而且我有一些 - 我希望 - 愚蠢的问题我没有看到我的代码...如果你们能帮助我,我真的很感激。
我的扩展程序使用当前标签的URL执行一些操作。它在我的后台页面上使用 onUpdate 事件工作正常,在变量上设置选项卡的URL然后我在弹出窗口中使用它。
问题是,如果用户启动,选择不同的选项卡,而不更新URL,我的事件将不会再次触发...所以我现在也在听 onSelectionChanged 事件。
问题是onSelectionChanged事件的参数中没有“tab”对象,所以我不能要求tab.url属性。
我尝试使用 chrome.tabs.getCurrent()方法,但显然我做错了什么......而且我达到了我的非常小的知识限制。
这是代码,如果你们可以看看并指出我正确的方向,我会非常感激。
<script>
var tabURL = '';
var defaultURLRecognition = [ "test" ];
// Called when the url of a tab changes.
function checkForValidUrl(tabId, changeInfo, tab) {
//THIS IS WHAT'S NOT WORKING, I SUPPOSE
if (tab==undefined) {
chrome.tabs.getCurrent(function(tabAux) {
test = tabAux;
});
}
//
// If there's no URLRecognition value, I set the default one
if (localStorage["URLRecognition"]==undefined) {
localStorage["URLRecognition"] = defaultURLRecognition;
};
// Look for URLRecognition value within the tab's URL
if (tab.url.indexOf(localStorage["URLRecognition"]) > -1) {
// ... show the page action.
chrome.pageAction.show(tabId);
tabURL = tab.url;
}
};
// Listen for any changes to the URL of any tab.
chrome.tabs.onUpdated.addListener(checkForValidUrl);
// Listen for tab selection changes
chrome.tabs.onSelectionChanged.addListener(checkForValidUrl);
</script>
答案 0 :(得分:3)
我会做这样的事情:
function checkForValidUrl(tab) {
//...
}
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
if(changeInfo.status == "loading") {
checkForValidUrl(tab);
}
});
chrome.tabs.onSelectionChanged.addListener(function(tabId, selectInfo){
chrome.tabs.getSelected(null, function(tab){
checkForValidUrl(tab);
});
});