所以我必须在某个网站上的表单中输入信息,我们称之为 websiteA 。我必须在州的另一个网站上输入相同的信息,我们称之为 websiteB 。
我正在寻找一种简化流程的方法,并将来自 websiteA 的信息自动放入 websiteB 上的匹配表单字段中。这仅适用于我自己的计算机本地使用。
我是这个过程的新手,并且已经阅读了不同的方法来做到这一点。我目前正试图在Tampermonkey这样做,因为这似乎是我做一些研究的最佳选择。
到目前为止,下面是我的。作为一个例子,我只使用一个需要名称的表单字段。元素的ID为name
。
// ==UserScript==
// @name Form Copier
// @namespace http://localhost
// @match https://websiteA.com
// @match https://websiteB.com
// @grant GM_getValue
// @grant GM_setValue
// ==/UserScript==
if(document.URL.indexOf("https://websiteA.com") >= 0){
window.open('https://websiteB.com'); //opens the destination website
document.getElementById("name").value = GM_setValue("name");
}
else if(document.URL.indexOf("https://websiteB.com") >= 0){
document.getElementById("name").value = GM_getValue("name");
}
这是我目前所拥有的,而且它根本不起作用。我试图寻找更好的方法来完成这项工作并且没有任何运气。如果有人能帮助我,我们将不胜感激。
答案 0 :(得分:0)
一些事情:
GM_setValue()
。见the documentation for GM_setValue
。@match
指令最后需要/*
。 (除非你真的想要确切的主页,而不是其他人。)waitForKeyElements
(或类似)来处理时间问题。总而言之,脚本将是这样的:
// ==UserScript==
// @name Form Copier, Cross-domain
// @match https://Sender.com/*
// @match https://Receiver.com/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// @grant GM_openInTab
// ==/UserScript==
//-- Wait for the element with the ID "name".
waitForKeyElements ("#name", setOrGetName, true);
function setOrGetName (jNode) {
if (location.hostname == "Sender.com") {
//-- Store the `name` value:
GM_setValue ("nameVal", jNode.val() );
GM_openInTab ("https://Receiver.com/");
}
else if (location.hostname == "Receiver.com") {
var nameVal = GM_getValue ("nameVal");
if (nameVal) {
//-- Set the form value:
jNode.val (nameVal);
//-- Reset storage:
GM_deleteValue ("nameVal");
}
}
}