我想创建一个附加组件,根据面板的输入(包含文本字段)打开一个带有特定链接的选项卡。 问题是:我之前从未使用过任何编程语言。
当用户按下“返回”时,它应该将文本字段中的内容发送到主脚本。但唯一发生的事情是它重置字段值,而不打开任何标签。
这是面板中的嵌入式脚本:
var textArea = document.getElementById('edit-box');
textArea.addEventListener("keypress", onkeypress)
function onkeypress(event) {
if (event.keyCode == 13) {
textArea.setAttribute('tabindex', 0);
text = textArea.value.replace(/\r?\n/gm,"");
addon.port.emit("text-entered", text);
textArea.value = '';
}
}
这是主脚本,它应该打开标签:
var buttons = require('sdk/ui/button/action');
var tabs = require("sdk/tabs");
var ui = require("sdk/ui");
var {
ToggleButton
} = require('sdk/ui/button/toggle');
var panels = require("sdk/panel");
var self = require("sdk/self");
var data = require("sdk/self").data;
var button = ToggleButton({
id: "my-button",
label: "my button",
icon: {
"16": "./icon-16.png",
"32": "./icon-32.png",
"64": "./icon-64.png"
},
onChange: handleChange
});
var panel = panels.Panel({
width: 300,
height: 169,
contentURL: self.data.url("panel.html"),
onHide: handleHide
});
function handleChange(state) {
if (state.checked) {
panel.show({
position: button
});
}
}
function handleHide() {
button.state('window', {
checked: false
});
}
function handleClick(state) {
text_entry.show();
}
var text_entry = require("sdk/panel").Panel({
contentURL: data.url("panel.html"),
contentScriptFile: data.url("get-text.js")
});
text_entry.on("show", function() {
text_entry.port.emit("show");
});
text_entry.port.on("text-entered", function(text) {
console.log(text);
text_entry.hide();
tabs.open("http://www.example.com/" + text + ".html");
});
现在,我如何让它发挥作用?
提前致谢
答案 0 :(得分:0)
将keypress
事件更改为keyup
:
textArea.addEventListener("keypress", onkeypress)
制作:
textArea.addEventListener("keyup", onkeypress)
keypress没有e.keyCode
我不认为