将变量从popup.js传递到background.js,接收到未定义
Passing variable from popup.js to background.js received as undefined
我试图使一个chrome扩展,当用户输入一个网址,并按下按钮"去"它加载在一个新的选项卡网页。我试图通过使用消息传递将用户输入传递到后台页面,但由于某种原因,当后台试图访问消息时,输入总是未定义的。我想知道如何适当地让用户输入到后台,这样它就会在一个新的选项卡中打开链接。
Manifest.json
{
"manifest_version": 2,
"name": "My Cool Extension",
"version": "0.3.1.2",
"description":"User can enter in wepage and press button to open webpage in new tab.",
"background": {
"scripts": ["background.js"]
},
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": ["jquery-2.1.4.min.js", "content.js"]
}
],
"browser_action": {
"default_icon": "arrow.png",
"default_popup":"popup.html"
},
"permissions": [
"tabs",
"http://*/*",
"https://*/*"
],
"icons":{
"128":"arrow.png"
}
}
background.js
chrome.runtime.onMessage.addListener(
function(request,sender,sendResponse)
{
if(request.message == "Go_To_Clicked"){
chrome.tabs.create({ url: chrome.tabs.create({ url: request.websiteVar})
}
})
popup.html
<!doctype html>
<html>
<head>
<title>Getting Started Extension's Popup</title>
<style>
body {
font-family: "Segoe UI", "Lucida Grande", Tahoma, sans-serif;
font-size: 100%;
}
#status {
/* avoid an excessively wide status text */
white-space: pre;
text-overflow: ellipsis;
overflow: hidden;
max-width: 400px;
}
</style>
<script src="popup.js"></script>
</head>
<body>
<div id="status"></div>
<img id="image-result" hidden>
<form>
Enter Link:
<br>
<input id = "userWebsite" type="text" name="webLink">
</br>
</form>
<button id = "goTo" type="button">Go to</button>
<button id = "save" type="button">Save</button>
<script type="text/javascript" src="popup.js"></script>
</body>
</html>
popup.js
window.onload=function()
{
document.getElementById("goTo").onclick=function()
{
var websiteVar = document.getElementById('userWebsite').value;
chrome.runtime.sendMessage({ website: websiteVar, message:"Go_To_Clicked"});
}
}
您需要使用request.website
而不是request.websiteVar
(侦听器端不存在)
chrome.tabs.create({ url: request.website},function(tab){
// Callback
})
相关文章:
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 如何调用Crossrider中声明的javascript函数;background.js”;点击我网站页面上的一个按钮
- background.js正在捕获textbox的keydown事件
- JS:“data-background-color”和.data(“background-color”)之间的关系
- featherlight.js background & close button css?
- 从background.js发送到contentScript.js
- 如何从background.js访问内部资源
- background.js在chrome扩展上的用途是什么
- 如何在Chrome Packaged应用程序的background.js中包含Chrome Javascript API
- Simple message passing between 'background.js' to
- I'我试图让jquery在我的chrome扩展的background.js中工作,结果成功了;不起作用.为什么?
- 从Background.js在页面级别执行代码并返回值
- Chrome-扩展:从background.js向content.js发送消息时出错
- chrome extension background.js
- 从Chrome扩展background.js向服务器发送URL
- 将变量从popup.js传递到background.js,接收到未定义
- 在chrome.tabs.executeScript中使用background.js变量
- Chrome扩展:Background.js "Uncaught TypeError"当试图获得标签
- 将数组变量从background.js传递到content.js
- background.js和content-script之间的通信?响应是UNDEFINED