Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传输数据以在其他网站中使用_Javascript_Jquery_Html - Fatal编程技术网

Javascript 传输数据以在其他网站中使用

Javascript 传输数据以在其他网站中使用,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试将非私人数据输入我的网页,然后在完全不同的网站上使用这些数据,以获得一个结果,然后我希望将其带回我的网页。 虽然这是一个免费的在线计算器工具,但是这个公式是隐藏的/专有的,否则我只会将这个公式合并到我的网页中,所以我一直在使用他们的服务器进行计算。 我的计划是在我的网页上输入数据,将其保存到类似localStorage的地方,然后使用FireFox,使用Greasemonkey脚本从存储中检索数据,将其输入计算器并找到结果。 我是新手,遇到了一些问题,因为localStorage/se

我正在尝试将非私人数据输入我的网页,然后在完全不同的网站上使用这些数据,以获得一个结果,然后我希望将其带回我的网页。 虽然这是一个免费的在线计算器工具,但是这个公式是隐藏的/专有的,否则我只会将这个公式合并到我的网页中,所以我一直在使用他们的服务器进行计算。 我的计划是在我的网页上输入数据,将其保存到类似localStorage的地方,然后使用FireFox,使用Greasemonkey脚本从存储中检索数据,将其输入计算器并找到结果。 我是新手,遇到了一些问题,因为localStorage/sessionStorage/Cookie似乎不会将其数据共享到其他网页域。 我尝试了localStorage.setItemage、age.value和retrieving-可以在同一个工作区中检索,但不能在新网站上检索。 我认为问题在于安全,但我不担心是否有人截取数据,因为这对他们毫无用处

这是我的网页的简化代码。为了简单起见,我只包含了一个变量,并将其放入检索代码中,显示数据可供本地使用:

<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>
因此,我需要做的是将第一个网页的年龄传递到第二个网页上运行的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>
通用汽车代码示例:

// ==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);
// ==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);