cfx Firefox插件,面板未打开选项卡

时间:2015-06-25 16:50:00

标签: javascript firefox firefox-addon

我想创建一个附加组件,根据面板的输入(包含文本字段)打开一个带有特定链接的选项卡。 问题是:我之前从未使用过任何编程语言。

当用户按下“返回”时,它应该将文本字段中的内容发送到主脚本。但唯一发生的事情是它重置字段值,而不打开任何标签。

这是面板中的嵌入式脚本:

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");
});

现在,我如何让它发挥作用?

提前致谢

1 个答案:

答案 0 :(得分:0)

keypress事件更改为keyup

你有:

textArea.addEventListener("keypress", onkeypress)

制作:

textArea.addEventListener("keyup", onkeypress)

keypress没有e.keyCode我不认为