Переменная не существует в других функциях (расширение javascript и Firefox) - PullRequest
0 голосов
/ 20 августа 2009

Мое расширение Firefox должно выполнять следующие действия:

  1. Сохранить адрес текущей страницы
  2. Открыть новую страницу
  3. Поместить адрес в содержимое новой страницы, если нажата кнопка

Проблема в том, как сохранить этот адрес в переменной. Если адрес сохраняется в переменной через функцию на первой странице, функция на новой странице, которая должна показывать адрес при нажатии кнопки, не имеет этой переменной. Должен ли я использовать глобальную функцию или что-то?

function openTab() {
  //Save an address of current page
  path=content.location.href;
  //Open new Tab and select it
  var tab=gBrowser.addTab("chrome://intabeditor/content/editor.html");
  var newTabBrowser = gBrowser.getBrowserForTab(tab);
  gBrowser.selectedTab=tab;
}

function write() {
  content.body.innerHTML=path;
}

Функция openTab() выполняется при нажатии соответствующей кнопки. То же самое с функцией write().

1 Ответ

1 голос
/ 20 августа 2009
var path = null;
function openTab() {
  //Save an address of current page
  path=content.location.href;
  //Open new Tab and select it
  var tab=gBrowser.addTab("chrome://intabeditor/content/editor.html");
  var newTabBrowser = gBrowser.getBrowserForTab(tab);
  gBrowser.selectedTab=tab;
}

function write() {
  if (path!=null)
    content.body.innerHTML=path;
}

--- EDIT А этот пример? все заключено в xopen:

<script type="text/javascript">

    var xopen = function()
    {
        this.path = null;
        this.openTab = function()
        {
            //Save an address of current page
            this.path=content.location.href;
            //Open new Tab and select it
            var tab=gBrowser.addTab("chrome://intabeditor/content/editor.html");
            var newTabBrowser = gBrowser.getBrowserForTab(tab);
            gBrowser.selectedTab=tab;   
        }

        this.write = function () 
        {
            if (this.path!=null)
                content.body.innerHTML=this.path;
        }
    }
    var wopen = new xopen();

</script>
<button onclick="wopen.openTab()">openTab</button>
<button onclick="wopen.write()">write</button>
...