在两个HTML页面之间传递JavaScript变量

时间:2014-11-05 01:07:33

标签: javascript jquery html

我有这个html页面,它收集电影名称并将其存储在JavaScript变量中。

<html>
<SCRIPT LANGUAGE="javascript">
function getMovieName() {
var movieName =  document.getElementById('movieName').value;
window.open("display.html?myVar1=42");
}
</SCRIPT>
<head>
<form onsubmit="return getMovieName();" name="login-form" class="login-form" method="post">
<input id="movieName" type="string" class="Enetr Movie Name" placeholder="Movie Name" />
<input type="submit" name="submit" value="Search" class="button" />
</form>
</head>
</html>

然后打开这个html页面..

<html>
<SCRIPT LANGUAGE="javascript">
window.onload = function(){
    var movieName = VARIABLE
document.getElementById("app").src ="http://xfinitytv.comcast.net/search?query="+movieName+"&limit=1&or=true&resources=odol%2Crovi%2Cvod%2Cest&persona=8644&dacid=12%7C7";
}
</SCRIPT> 
<head>
<div style="border: 3px solid rgb(201, 0, 1); overflow: hidden; margin: 15px auto; max-width: 550px;">
<iframe id="app" scrolling="no" src=""target="_top" style="border: 200px none; 
margin-left: -20px; margin-top:-140px; width: 900px;height: 350px;">
</iframe>
</div>
</head>
</html>

在哪里说'VARIABLE'是我希望拥有之前定义的JavaScript变量的地方。我会对此提供任何帮助,谢谢。

3 个答案:

答案 0 :(得分:0)

如果您不想使用任何服务器端技术,则可以使用查询字符串。在打开新页面时添加电影名称作为查询字符串参数,然后在新页面访问URL中添加以获取此变量。

<html>
<SCRIPT LANGUAGE="javascript">
function getMovieName() {
var movieName =  document.getElementById('movieName').value;
window.open("display.html?myVar1=42&movieName=" + movieName);
}


</SCRIPT>
<head>
<form onsubmit="return getMovieName();" name="login-form" class="login-form" method="post">
<input id="movieName" type="string" class="Enetr Movie Name" placeholder="Movie Name" />
<input type="submit" name="submit" value="Search" class="button" />
</form>
</head>
</html>

第二页:

<html>
<SCRIPT LANGUAGE="javascript">
window.onload = function(){
    var movieName = getQueryVariable("movieName")
document.getElementById("app").src ="http://xfinitytv.comcast.net/search?query="+movieName+"&limit=1&or=true&resources=odol%2Crovi%2Cvod%2Cest&persona=8644&dacid=12%7C7";
}

function getQueryVariable(variable)
{
       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(pair[0] == variable){return pair[1];}
       }
       return(false);
}
</SCRIPT> 
<head>
<div style="border: 3px solid rgb(201, 0, 1); overflow: hidden; margin: 15px auto; max-width: 550px;">
<iframe id="app" scrolling="no" src=""target="_top" style="border: 200px none; 
margin-left: -20px; margin-top:-140px; width: 900px;height: 350px;">
</iframe>
</div>
</head>
</html>

注意:我自己没有写过getQueryVariable函数。信用转到link

答案 1 :(得分:0)

这样:

 var movieName = window.location.hash;

,网址应为

window.open("display.html#42"); // '42' is presumably that movie ID.

答案 2 :(得分:0)

我只提出这个解决方案,因为有人评论说在JavaScript中解析查询字符串有点麻烦......并且考虑到我可以完成你想要的一行代码(没有任何其他程序必须改变)那么多你可能想要考虑这个:

var movieName = window.opener.document.getElementById("movieName").value;

替换用于读取`var movieName = getQueryVariable(&#34; movieName&#34;)&#39;的行。如上所述,那就是它......

实际上我的解决方案允许您在第一个文件中重构现在不必要的代码:

更改≤script≥TAG,使其显示为:

<SCRIPT LANGUAGE="javascript">
function getMovieName() {
    window.open("display.html?myVar1=42");
}
</SCRIPT>

...如前所述,在第二个文件中,≤script≥标签将为:

<SCRIPT LANGUAGE="javascript">
window.onload = function(){
    var movieName = self.opener.document.getElementById("movieName").value;
    document.getElementById("app").src ="http://xfinitytv.comcast.net/search?query="+movieName+"&limit=1&or=true&resources=odol%2Crovi%2Cvod%2Cest&persona=8644&dacid=12%7C7";
}

CAVEAT:第一个网页必须驻留在它们所驻留的服务器上具有相同的主机名。它们也必须在同一个端口上提供服务(可能你不需要担心的事情......默认端口80似乎在这个例子中占据主导地位)。我不认为这会是一个问题,因为您在指定第二页时使用相对寻址,即winnow.open 'display.html'