Я ищу быстрый способ захватить некоторые данные с одной веб-страницы и выбросить ее в другую. У меня нет доступа к строке запроса в URL-адресе второй страницы, поэтому передача данных таким образом не является вариантом. Сейчас я использую Greasemonkey скрипт пользователя в тандеме с триггером Bookmarklet JS: 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()
, которая используется на нескольких других страницах, в основном для автоматизации заполнения форм на основе даты; людям действительно нравится их «волшебная кнопка».
Приведенный выше код работает, но процесс прерывания прерывается: для того, чтобы пользователь мог узнать, какую страницу на общедоступном узле захватить данные, сначала нужно открыть внутреннюю страницу. Затем, после того, как GM cookie будет установлен с общей страницы, внутренняя страница должна быть перезагружена, чтобы получить правильную информацию во внутренних переменных страницы. Мне интересно, есть ли способ GM_getValue()
в bookmarklet-clicktime, чтобы предотвратить необходимость обновления. Благодаря!
Не могли бы вы добавить ссылку на UserScript вы разрабатываете? Я не уверен, что понимаю ваш последний абзац. – NVI
Я использую очень схожую технику в одном из своих сценариев http://github.com/NV/pwnlast.fm/blob/master/pwnlastfm.user.js#L20-26, но я не использую файлы cookie или GM_setValue/GM_getValue. – NVI