Javascript 什么';将数据从一个打开的浏览器选项卡移动到另一个选项卡的有效方法是什么?
我正在寻找一种快速的方法,从一个网页上抓取一些数据,并将其扔进另一个网页。我无法访问第二个页面的URL中的查询字符串,因此无法以这种方式传递数据。现在,我正在使用Greasemonkey用户脚本和JS bookmarklet触发器:Javascript 什么';将数据从一个打开的浏览器选项卡移动到另一个选项卡的有效方法是什么?,javascript,greasemonkey,Javascript,Greasemonkey,我正在寻找一种快速的方法,从一个网页上抓取一些数据,并将其扔进另一个网页。我无法访问第二个页面的URL中的查询字符串,因此无法以这种方式传递数据。现在,我正在使用Greasemonkey用户脚本和JS bookmarklet触发器:javascript:doIt() 虽然我对另一种方法持开放态度,但如果可能的话,我更愿意使用这个基本模型,因为这只是doIt()中代码的一小部分,它用于其他几个页面,主要用于自动化基于日期的表单填充;人们真的很喜欢他们的“魔术按钮” 上面的代码可以工作,但是工作流有
javascript:doIt()代码>
虽然我对另一种方法持开放态度,但如果可能的话,我更愿意使用这个基本模型,因为这只是doIt()
中代码的一小部分,它用于其他几个页面,主要用于自动化基于日期的表单填充;人们真的很喜欢他们的“魔术按钮”
上面的代码可以工作,但是工作流有一个中断:为了让用户知道从公共站点的哪个页面获取数据,必须首先打开内部页面。然后,一旦从公共页面设置了GM cookie,就必须重新加载内部页面,以便将适当的信息输入到内部页面变量中。我想知道是否有任何方法可以在bookmarklet clicktime中GM_getValue()
来避免刷新。谢谢 你能将书签移动到一个按钮或链接上吗?Greasemonkey会添加到页面上吗?
然后可以设置click事件处理程序以激发GM_getValue()
看起来当前的方法正在利用一个“安全漏洞”——一个将来可能会被关闭的漏洞。你可以考虑在Firefox扩展中做任何事情。
可能有用的链接:您可以添加一个指向正在开发的UserScript的链接吗?我不确定我是否理解你的最后一段。我在我的一个脚本中使用了非常类似的技术,但我不使用cookies或GM_setValue/GM_getValue。谢谢,这是个好主意。毕竟,利用安全漏洞是不好的做法。
// ==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;
}
}