Как эффективно переместить данные с одной открытой вкладки браузера на другую? - PullRequest
3 голосов
/ 13 февраля 2010

Я ищу быстрый способ получить некоторые данные с одной веб-страницы и перекинуть их на другую. У меня нет доступа к строке запроса в URL-адресе второй страницы, поэтому передача данных таким способом невозможна. Прямо сейчас я использую пользовательский скрипт Greasemonkey в тандеме с триггером JS bookmarklet: javascript:doIt();

// ==UserScript==
// @include        public_site
// @include        internal_site
// ==/UserScript==

if (document.location.host.match(internal_site)) {
  var datum1 = GM_getValue("d1");
  var datum2 = GM_getValue("d2");
}

unsafeWindow.doIt = function() {
  if(document.location.host.match(public_site)) {
    var d1 = innerHTML of page element 1;
    var d2 = innerHTML of page element 2;
    //Next two lines use setTimeout to bypass GM_setValue restriction
    window.setTimeout(function() {GM_setValue("d1", d1);}, 0);
    window.setTimeout(function() {GM_setValue("d2", d2);}, 0);
  }
  else if(document.location.host.match(internal_site)) {
    document.getElementById("field1").value = datum1;
    document.getElementById("field2").value = datum2;
  }
}

Хотя я открыт для другого метода, я бы предпочел остаться с этой базовой моделью, если это возможно, так как это лишь небольшая часть кода в doIt(), который используется на нескольких других страницах, в основном для автоматизации датирования. основанные формы заполняет; людям действительно нравится их "волшебная кнопка".

Приведенный выше код работает, но есть прерывание рабочего процесса: чтобы пользователь знал, с какой страницы на общедоступном сайте можно получить данные, сначала нужно открыть внутреннюю страницу. Затем, как только файл cookie GM устанавливается с общедоступной страницы, необходимо перезагрузить внутреннюю страницу, чтобы получить правильную информацию о переменных внутренней страницы. Мне интересно, есть ли способ GM_getValue() во время клика по букмарклету, чтобы избежать необходимости обновления. Спасибо!

1 Ответ

0 голосов
/ 24 мая 2010

Можете ли вы переместить букмарклет на кнопку или ссылку - что Greasemonkey добавит на страницу (ы)? Тогда вы можете установить обработчики событий click для запуска GM_getValue ().

Похоже, что нынешний метод использует "дыру в безопасности", которая может быть закрыта в будущем. Вместо этого вы можете рассмотреть возможность сделать все в расширении Firefox.

Возможно, полезная ссылка: http://articles.sitepoint.com/article/ten-tips-firefox-extensions/1

...