首先,我知道这个主题还在StackOverflow中,但我还没有完全理解它是如何工作的,正好阅读现有的答案。所以,对不起,我希望现在明白。
我不知道我的指示是否不正确以及为什么它不正确。
我有一个html页面,就像另一些“遮阳板”一样,所以从这个“主”页面,我可以看到其他的页面将它们嵌入遮阳板页面区域(使用iframe)。 / p>
与此同时,我为所有页面(包括遮阳板)都有一个共同的.js文件。
因此,例如,如果我在.js中使用“hello world”(字符串类型)的valor声明变量,我可以从visor或嵌入页面访问此变量,并且仍然具有其原始值。 但是如果我从遮阳板(或嵌入式)改变它的勇气,那么另一页就无法读取从另一页改变的新的勇气。
它可以创建一个global-between-pages变量吗?。
我尝试使用localStorage,但它仅适用于使用它的特定页面。
所以,让我们看看,或多或少:
.JS FILE
var Example = "Hello world";
function TellMe()
{
alert(Example);
}
function ChangeVar()
{
Example = "Goodbye world";
}
第1页(当然,在头部中引用了.js文件)
<div onclick="ChangeVar();">click!</div>
第2页(当然,在头部中引用了.js文件),但是点击了第1页的AFTER div
<div onclick="TellMe();">click!</div>
这将提醒“Hello World”,代替“Goodbye World”。
所以我理解每个页面都有自己的.js变量版本,即使所有页面都使用相同的.js,甚至当一个html从另一个html访问时(嵌入iframe)。
如果点击第2页的div并显示“Goodbye World”消息后,如何获得此示例?
我会更加解释,看到有关黑客的答案数量,浪费其他页面以及虚增银行账户。
这只是一个文档页面(来自软件),我有一个“遮阳”页面,从中我可以访问其他页面。实际上我在根文件夹中有“visor”页面,而其他页面,在这个根目录下的一个文件夹中,都在同一个域中,不是吗?。
我想要页面上的“next”和“previus”按钮,以避免用户回到遮阳板并选择新页面,但我需要知道用户正在观看的页面的数量,知道下一页显示的页面或者说是先天。
答案 0 :(得分:5)
我正在分享一个关于localstorage的非常简单的例子,它可以解决你的需求。 假设您有两个文件page1.html和page2.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>
在page2.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>
您现在可以在任何页面中访问localstorage中的值。
另一个选项
您可以通过querystring参数将值从一个页面传递到另一个页面。
例如。 <a href='page2.html?index=someValue'>goto next page</a>
现在在page2.html中,您可以通过javascript获取此索引值并设置所需字段。
希望能回答您的问题。
答案 1 :(得分:2)
HTML本地存储应该是您正在寻找的。 这是一个了解更多信息的链接 - http://diveintohtml5.info/storage.html
您也可以使用window.name
称为JavaScript会话。但只有使用相同的窗口/标签,它才有效。链接 - http://www.thomasfrank.se/sessionvars.html
另外明显有饼干。
我的偏好顺序是我说明我的解决方案的顺序。
答案 2 :(得分:1)
此处的问题是Javascript
的安全问题。
即使执行jQuery .load()
之类的简单事件,由于CORS
问题,页面上的其他脚本也无法加载。
Variables
在页面之间无法通过,尤其是iframes
,因为可能会发生各种各样的恶意活动。
我的建议是在您正在进行的每个JS
内加载相同的iframe
文档(如果您能够这样做的话。)。
您将无法将load
js
个文件存入您网域内的网站。
答案 3 :(得分:1)
是的,基本上,你们都是对的。
只需存储您想要在localStorage.variableToManipulate内的页面之间操作的变量就足够了。直接,如果我们想要。
这就足够了(我会重复我的第一个例子):
.JS FILE
var localStorage.Example = "Hello world";
function TellMe()
{
alert(localStorage.Example);
}
function ChangeVar()
{
localStorage.Example = "Goodbye world";
}
第1页(当然,在头部中引用了.js文件)
<div onclick="ChangeVar();">click!</div>
第2页(当然,在头部中引用了.js文件),但是点击了第1页的AFTER div
<div onclick="TellMe();">click!</div>
但是,只有一件事,当你进行这种测试时,记得只打开一个html页面。我正在测试打开的两个(Visor和PageN),我认为每个人都使用自己的localStorage变量实例(由自己的页面本身修改)。
只是一个菜鸟愚蠢的错误!对不起,非常感谢你伸出援助之手!
答案 4 :(得分:0)
我知道已经晚了,但是谁想在同一域下的页面之间共享数据,他们可以利用SharedWorker