【发布时间】:2017-06-07 02:20:12
【问题描述】:
我正在尝试构建多功能框扩展。本质上我希望这个扩展拉出一个 url,然后等待该 url 加载,然后执行一些简单的 javascript。
不确定将长代码块放在问题中是否值得赞赏,如果不是,请随时对我大喊大叫。
manifest.json:
{
"manifest_version": 2,
"name": "AutoATR",
"version": "0.1",
"omnibox": { "keyword" : "atr" },
"icons": {
"16": "package.png"
},
"background": {
"persistent": true,
"scripts": ["background.js"]
}
}
背景.js:
function resetDefaultSuggestion() {
chrome.omnibox.setDefaultSuggestion({
description: 'atr: Placeholder: %s'
});
}
resetDefaultSuggestion();
function navigate(url) {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs)
{
chrome.tabs.update(tabs[0].id, {url: url});
});
}
function finder(theID) {
document.getElementById('theElement').value=theID
document.getElementsByClassName('btn')[1].click()
}
chrome.omnibox.onInputEntered.addListener(function() {
// Navigate to URL
navigate("https://theURL.com");
});
// **** Would like to wait for just this tab to load.
// Then Execute finder(). ****
【问题讨论】:
-
不是 100% 确定,但您可以在地址栏/多功能框中执行以下操作:
javascript:alert('test');- 如果您输入的是 URL 而不是 URL,它会起作用。 -
你是在建议这样的事情吗?
navigate(javascript:alert('test');); -
您有一个标签 ID。您等待适当的事件,就像任何其他选项卡/页面加载一样。您想要观看的确切事件将取决于您何时想要对页面的加载采取行动。要收听的正常事件是
tabs.updated,或webNavigation事件之一(通常是onCompleted或onDOMContentLoaded),具体取决于您需要知道的内容。 -
这也是我想弄清楚的。如何获取该选项卡的 tabID?我一直在尝试理解文档,但示例很少。
-
问题询问“我可以做 X 吗?/有可能做 X 吗?”很少适用于堆栈溢出 (SO) 格式。答案通常是“是”,但有时是“否”。无论哪种方式,它通常都不是很有效。此外,通常的意思是“我该怎么做 X?”,这通常但并不总是对 SO 来说过于宽泛。在您的情况下,答案是“是”。如果没有您提供的更多信息,您的愿望就不清楚了。 (见之前的评论)。您在代码中放置 cmets 的位置不在导航后的程序流程中,因此我们并不真正知道您想要什么。
标签: javascript google-chrome-extension omnibox