Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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 在html页面之间共享变量_Javascript_Html_Variables - Fatal编程技术网

Javascript 在html页面之间共享变量

Javascript 在html页面之间共享变量,javascript,html,variables,Javascript,Html,Variables,首先,我知道这个主题还在StackOverflow中,但我还没有完全理解它是如何工作的,阅读现有的答案。所以,对不起,我希望现在能理解 我不知道我的方法是否正确,为什么不正确 我有一个html页面,它的行为类似于其他几个页面的“visor”,因此从这个“main”页面,我可以看到其他页面将它们嵌入visor页面的某个区域(使用iframe) 同时,我为所有页面(包括visor)提供了一个通用的.js文件 例如,如果我在.js中声明了一个值为“hello world”(字符串类型)的变量,那么我可

首先,我知道这个主题还在StackOverflow中,但我还没有完全理解它是如何工作的,阅读现有的答案。所以,对不起,我希望现在能理解

我不知道我的方法是否正确,为什么不正确

我有一个html页面,它的行为类似于其他几个页面的“visor”,因此从这个“main”页面,我可以看到其他页面将它们嵌入visor页面的某个区域(使用iframe)

同时,我为所有页面(包括visor)提供了一个通用的.js文件

例如,如果我在.js中声明了一个值为“hello world”(字符串类型)的变量,那么我可以从visor或嵌入式页面访问该变量,并且仍然保留其原始值。 但如果我从visor(或embedded)更改其valor,则另一页无法读取从另一页更改的新valor

可能会使页间变量?成为全局变量

我尝试使用localStorage,但它只适用于使用它的特定页面

让我们看看,或多或少:

.JS文件

var Example = "Hello world";

function TellMe()
{
    alert(Example);
}

function ChangeVar()
{
    Example = "Goodbye world";
}
localStorage["Example"] = "Hello world";

function TellMe()
{
    alert(localStorage["Example"]);
}

function ChangeVar()
{
    localStorage["Example"] = "Goodbye world";
}

第1页(当然,标题部分有引用的.js文件)

点击!

第2页(当然在页眉部分有引用的.js文件),但是在单击了第1页的div之后

<div onclick="TellMe();">click!</div>
<div onclick="TellMe();">click!</div>
点击!
这将提醒“你好世界”,而不是“再见世界”

因此,我知道每个页面都有自己版本的.js变量,即使所有页面都使用相同的.js,甚至从另一个页面访问一个html(嵌入iframe)

在第2页的div中单击消息“再见世界”后,如何得到这个示例


我会更详细地解释,看看有多少答案是关于黑客、浪费其他页面和膨胀银行账户的

这只是一个文档页面(来自软件),我有一个“visor”页面,我可以从它访问其他页面。实际上,我在根文件夹中有“visor”页面,而其他页面,在这个根目录的文件夹中,都在同一个域中,不是吗


我希望页面上有“next”(下一页)和“previus”(上一页)按钮,以避免用户返回visor并选择新页面,但我需要知道用户正在查看的页面编号,以了解下一页或previus显示的页面。

这里的问题是Javascript的安全问题

由于
CORS
问题,即使执行诸如
jQuery.load()
之类的简单事件,页面上的其他脚本也不会加载

变量
无法在页面之间传递,尤其是使用
iFrame
,因为可能存在各种恶意活动

我的建议是在每个
iframe
中加载相同的
JS
文档(如果您能够这样做的话)


您将无法
js
文件加载到不在您的域中的站点。

HTML本地存储应该是您需要的。 以下是了解更多信息的链接-

您还可以使用称为JavaScript会话的
window.name
。但它只在使用相同的窗口/选项卡时起作用。链接-

而且很明显还有饼干


我的优先顺序将是我陈述解决方案的顺序。

我将与您分享一个关于localstorage的非常简单的示例,它将解决您的需求。 假设您有两个文件pG1.1.html和pGE2.html。 在page1.html的内部添加以下行

<div id="notes">
</div>

<script>
if(typeof(Storage)!=="undefined")
  {
  localStorage.lastname="Smith";
  document.getElementById("notes").innerHTML="Last name: " + localStorage.lastname;
  }
else
  {
  document.getElementById("notes").innerHTML="Sorry, your browser does not support web storage...";
  }
</script>

if(类型(存储)!=“未定义”)
{
localStorage.lastname=“Smith”;
document.getElementById(“notes”).innerHTML=“Last name:”+localStorage.lastname;
}
其他的
{
document.getElementById(“notes”).innerHTML=“对不起,您的浏览器不支持web存储…”;
}
页面2.html的内部

<div id="notes">
</div>

<script>
if(typeof(Storage)!=="undefined" && localStorage.lastname)
  {
  document.getElementById("notes").innerHTML="Last name: " + localStorage.lastname;
  }
else
  {
  document.getElementById("notes").innerHTML="Sorry, your browser does not support web storage...";
  }
</script>

if(typeof(Storage)!=“undefined”&&localStorage.lastname)
{
document.getElementById(“notes”).innerHTML=“Last name:”+localStorage.lastname;
}
其他的
{
document.getElementById(“notes”).innerHTML=“对不起,您的浏览器不支持web存储…”;
}
现在,您可以在任何页面中访问localstorage中的值

另一个选项

您可以通过querystring参数将值从一个页面传递到另一个页面。 例如,
现在在page2.html中,您可以通过javascript获取该索引值并设置必填字段


希望这能回答你们的问题。

是的,基本上,你们都是对的

只需在localStorage.variableToManipulate中的页面之间存储要操作的变量就足够了。如果我们愿意的话,直接

这样就足够了(我将重复我的第一个示例):

.JS文件

var Example = "Hello world";

function TellMe()
{
    alert(Example);
}

function ChangeVar()
{
    Example = "Goodbye world";
}
localStorage["Example"] = "Hello world";

function TellMe()
{
    alert(localStorage["Example"]);
}

function ChangeVar()
{
    localStorage["Example"] = "Goodbye world";
}
第1页(当然,标题部分有引用的.js文件)

点击!
第2页(当然在页眉部分有引用的.js文件),但是在单击了第1页的div之后

<div onclick="TellMe();">click!</div>
<div onclick="TellMe();">click!</div>
点击!
但是,有一件事,当您进行这种测试时,请记住只打开了一个html页面。我在测试时打开了两个(Visor和PageN),我认为每个都在使用自己的localStorage变量实例(由自己的页面本身修改)


只是一个新手犯的愚蠢错误!。很抱歉,非常感谢你能来帮忙

我知道现在已经晚了,但是无论谁想要在同一个域下的页面之间共享数据,他们都可以利用

您选择的这个问题的标记(“页面之间的html变量”)不太可能对您有所帮助。然而,“html变量”可能就足够了。(也就是说“中间”不是一个好的主题名称。)好的,richard,谢谢你的观点。可以跨多个页面持久化(如果不起作用,则说明您做错了):“来自域的所有页面共享同一存储区域,因此您可以使用此机制在多个页面之间保持数据持久化。数据也可以