传输数据以供其他网站使用
Transferring data for use in a different website
我试图将非私人数据输入我的网页,然后在一个完全不同的网站上使用这些数据来获得结果,然后我想带回我的网页。虽然这是一个免费的在线计算器(世界卫生组织的工具),但公式是隐藏的/专有的,否则我就把公式合并到我的网页上,所以我被困在使用他们的服务器来做计算。我的计划是在我的网页上输入数据,将其保存到localStorage之类的东西,然后使用FireFox,有一个Greasemonkey脚本,将从存储中检索数据,将其输入计算器并找到结果。我在这一切都是新的,并遇到了问题,因为它似乎是localStorage/sessionStorage/Cookies不会分享他们的数据到不同的网页域。我试过localStorage。setItem("age", age.value)和检索-可以在相同的工作区中检索,但不能在新的网站上检索。我认为问题是安全,但我不担心如果有人拦截数据,因为这对他们来说是无用的。
这是我的网页简化代码(我只包括一个变量的简单性,并在检索代码,这表明数据可用于本地使用):
<html>
<head>
<title>Ostoporosis assessment</title>
<script type="text/javascript">
function saveData() {
var age = document.getElementById("age");
localStorage.setItem("age", age.value);
window.open('https://www.shef.ac.uk/FRAX/tool.jsp', '_blank');
}
function clearData() {
document.getElementById("age").value= "";
}
function getData() {
var age = localStorage.getItem("age");
document.getElementById("age").value= age;
}
</script>
</head>
<body>
<p>Age:<input name="age" id="age" type="text" ></p>
<p><input name="Frax" id="Frax" type="button" value="Get Frax" onclick="saveData()"></p>
<p><input name="clearAge" id="clearAge" type="button" value="Clear age" onclick="clearData()"><input name="getAge" id="getAge" type="button" value="Get stored age" onclick="getData()"></p>
<p> Result</p>
<p><input name="result" id="result" type= "textbox"></p>
</body>
</html>
下面是我的GreaseMonkey脚本:
// ==UserScript==
// @name FraxCalculator
// @namespace DavidScripts
// @description UK online calculator
// @include https://www.shef.ac.uk/FRAX/tool*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js
// @version 1
// @grant none
// ==/UserScript==
window.addEventListener("load",function(){
var age = localStorage.getItem("age");
$('#ContentPlaceHolder1_toolage').val(age);
/*$('#ContentPlaceHolder1_toolage').val(55);
$("#ContentPlaceHolder1_sex1").attr('checked', 'checked');
$('#ContentPlaceHolder1_toolweight').val(60);
$('#ContentPlaceHolder1_ht').val(160);
$('#ContentPlaceHolder1_btnCalculate').click();*/
}, false);
所以我需要做的是将年龄从第一个网页传递到第二个网页上运行的GM脚本(我注释掉了硬编码的GM脚本,这表明它将起作用,一旦我找到了一种传递信息的方法),然后将此结果带回我的网页。我还没有弄清楚如何将结果返回到我的网页,但假设我将能够使用将数据带到计算器的技术。谢谢你的指导。
我通过将参数附加到URL来解决这个问题。greasemonkey在另一端工作并分离参数,然后我在Stack Overflow上找到了一段有用的代码,它可以分离每个参数,以便可以在目标页面上自动使用它,然后使用相同的技术将结果发送回来。以下是删节后的版本:
主要代码var c = $('#Height').val();
var d = $('#Weight').val();
if ( $('#previousFractureY').prop('checked') == true) {
var e = 1;
} else e = 0;
window.open('https://www.shef.ac.uk/FRAX/tool.jsp?c='+c+'&d='+d+'&e='+e);
window.close();
<p>Height:<input name="Height" id="Height" type="text" value=160>cm</p>
<p>Weight:<input name="Weight" id="Weight" type="text" value=60>kg</p>
<p>Previous Fracture: No<input value="no" name="previousFracture" id="previousFractureN" type="radio" checked />Yes<input value="yes" name="previousFracture" id="previousFractureY" type="radio" /> <p>
GM代码示例:
// ==UserScript==
// @name FraxCalculator
// @namespace Scripts
// @description UK online calculator
// @include https://www.shef.ac.uk/FRAX/tool*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js
// @version 1
// @grant none
// ==/UserScript==
window.addEventListener("load",function(){
var QueryString = function () {
// This function is anonymous, is executed immediately and
// the return value is assigned to QueryString!
var query_string = {};
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
// If first entry with this name
if (typeof query_string[pair[0]] === "undefined") {
query_string[pair[0]] = decodeURIComponent(pair[1]);
// If second entry with this name
} else if (typeof query_string[pair[0]] === "string") {
var arr = [ query_string[pair[0]],decodeURIComponent(pair[1]) ];
query_string[pair[0]] = arr;
// If third or later entry with this name
} else {
query_string[pair[0]].push(decodeURIComponent(pair[1]));
}
}
return query_string;
}();
$('#ContentPlaceHolder1_toolage').val(QueryString.a);
$("#ContentPlaceHolder1_sex2").attr('checked', true);
$('#ContentPlaceHolder1_btnCalculate').click();
setTimeout(function(){
var result1 = $('#ContentPlaceHolder1_lbrs1').html();
var result2 = $('#ContentPlaceHolder1_lbrs2').html();
}, 1000);
}, false);
- 如何记录其他网站的值并将其放入数据库中使用
- 如何在其他公共网站中拉取外部网站的URL
- 如何在不干扰网站其他部分的情况下,在画布上捕捉keydown事件
- 在其他网站上查找/着色/标记文本
- 使用 jquery 在我的网站中加载其他网页不起作用
- 如何自动填充我不拥有的其他网站
- 我们跟踪JavaScript文件的方式是否包含在其他网站中
- 如果从我的网站在浏览器中安装了其他程序,如何在移动应用程序中打开共享对话框
- 如何从其他网页获取图像并在我的网站上显示
- Google Drive是否不再允许从其他网站引用JavaScript文件
- 使用jquery获取其他域名网站的源代码
- Twitter,Instagram或Facebook等网络平台如何允许其他网站嵌入其内容
- CSS 在基于 URL 上工作,但不在网站的其他页面中使用.代码点火器
- 通过填写其他网站上的表格登录到网站
- 客户端脚本,用于显示来自其他网站的所有图像
- 从其他网站单击网页上的按钮时刷新外部网页
- 如何让这个可拖动的框覆盖所有其他网站元素
- 如何将我的聊天框分享到其他网站
- 如何显示来自其他网站的 RSS 源
- Drupal网站页面缓慢(这与同一主题的其他问题不同)