我尝试将* auth_token *传递给我的Chrome扩展程序,以便在GET请求中进一步使用它。
我觉得这很好
如何实现第4段?谢谢
答案 0 :(得分:1)
对apsillers有好处
是的,最后,我知道了! 在我的contentscript.js(在我的令牌页面中加载)获取令牌并将其发送到后台
contentscript.js
$(function(){
//get token from page
var token = $.getUrlVar('token');
if (typeof token != 'undefined') {
chrome.extension.sendMessage({token: token});
}
});
<强> background.js 强>
/*button handler*/
function main_click() {
alert(localStorage['auth_token']);
}
chrome.browserAction.onClicked.addListener(main_click);
/*listener*/
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.token)
localStorage['auth_token'] = request.token;
});
答案 1 :(得分:0)
我认为页面的localStorage
可以充当页面和扩展之间的桥梁。
在创建 auth_token 的第3阶段,将其转储到localStorage
,
<script type="text/javascript">
...
var auth_token = "sfafsafasfsaf";
localStorage["auth_token"] = auth_token;
...
</script>
在content script(content.js)中获取auth_token,
console.log(localStorage["auth_token"])
答案 2 :(得分:0)
content script communication上的Chrome文档建议在发送代码(此处为网页)中使用window.postMessage
,并在监听代码中使用window.addEventListener("message", ...)
(此处为Chrome的内容脚本)扩展,注入页面)。从技术上讲,任何类型的自定义DOM事件也可以执行此操作,但postMessage
/ message
已经内置了支持。
您应该能够逐字逐句地从代码中提取示例代码:
原生网页:
// right after we get auth_token saved to a variable...
window.postMessage({ auth_token: auth_token }, "http://www.mypagedomain.com");
(确保http://www.mypagedomain.com
已更改为您的实际协议/域。)
contentscript.js (在Chrome扩展程序中,正在收听)
window.addEventListener("message", function(event) {
// We only accept messages from ourselves
if (event.source != window) {
return;
}
console.log("auth_token received: " + event.data.auth_token);
}, false);
在事件监听器内部,如有必要,您可以使用message passing将auth_token
传递到您的背景页。
修改强>
你的清单应该包含这样的内容(注意在页面加载之前使用下面的run_at
注入脚本):
...
"content_scripts": [
{
"matches": ["http://www.mypagedomain.com/*"],
"js": ["contentscript.js"],
"run_at": "document_start"
}
],
...