IFrame 是否在 JavaScript 中保留对象?
Does IFrames keep objects in JavaScript?
我正在使用 html 和 javascript 编写一个小程序。我正在使用以下代码将我的主页中的 div 与另一个页面的正文交换:
function apresentarPaginaEmDiv(div, url) {
var iframe;
iframe = document.createElement('iframe');
iframe.style.visibility = "hidden";
iframe.src = url;
iframe.onload = function () {
var iFrameBody;
if (this.contentDocument) { // FF, Safari, Chrome
iFrameBody = this.contentDocument.body;
}
else if (this.contentWindow) { // IE
iFrameBody = this.contentWindow.document.body;
}
document.getElementById(div).innerHTML = iFrameBody.innerHTML;
document.body.removeChild(this);
}; ;
document.body.appendChild(iframe);
}
所以它只附加主体,因此,头部始终相同,JavaScript 文件及其关联对象也是如此吗???
假设我有一个 Var 示例 = "Hello";
如果我从第 1 页切换到第 2 页,我会保留那个 var ???
我问是因为它与某些功能一起使用而不与其他功能一起使用。我想知道这样做是否正确,是否真的保留了我的变量。
编辑:
function Clinica ()
{
this.id = 0;
this.doentes = new Array();
}
Clinica.prototype.criarDoente = function ()
{
var nome = document.getElementById("nome").value;
var sexoM = document.getElementById("masculino");
var sexoF = document.getElementById("feminino");
var data = document.getElementById("data").value;
var sexo;
alert("ID ATUAL " + this.id);
if (Clinica.verificarCriacaoDoente(nome,sexoM,sexoF,data))
{
if (sexoM.checked)
sexo = "Masculino";
else
sexo ="Feminino";
var d = new Doente(nome, sexo, this.id, data);
this.id++;
this.doentes.push(d);
alert(d.nome);
alert(this.id);
alert(d.dataNascimento);
alert(cl.doentes.length);
apresentarPaginaEmDiv("conteudo","Doentes.html");
}
}
所以我有这个 class Clinica witch 包含一组 Doentes 和一个 ID。 Doente 也是 class。
所以在一个 iFrame 中,我在数组中插入了一堆数据。然后我做你在 CriarDoente 中看到的那些警报,只是为了测试目的。然后我转到另一个页面(通过 iFrame,所以我不重新加载),当我检查数组长度时,它说它未定义。这就是为什么我认为它不保留数据。
注意:cl 是我在这个文件上初始化的 class clinica 的一个对象。
如果在父文档中声明了变量 'example',那么当 iframe 的 src 发生变化时它仍然可用。如果它在 iframe 中声明,则不会。我认为解决方案是如果它需要在页面之间保留,则在父文档中声明它。顺便说一句,您是否出于任何特定原因使用 iframe?只是询问,因为这些天通常不使用它们。
我正在使用 html 和 javascript 编写一个小程序。我正在使用以下代码将我的主页中的 div 与另一个页面的正文交换:
function apresentarPaginaEmDiv(div, url) {
var iframe;
iframe = document.createElement('iframe');
iframe.style.visibility = "hidden";
iframe.src = url;
iframe.onload = function () {
var iFrameBody;
if (this.contentDocument) { // FF, Safari, Chrome
iFrameBody = this.contentDocument.body;
}
else if (this.contentWindow) { // IE
iFrameBody = this.contentWindow.document.body;
}
document.getElementById(div).innerHTML = iFrameBody.innerHTML;
document.body.removeChild(this);
}; ;
document.body.appendChild(iframe);
}
所以它只附加主体,因此,头部始终相同,JavaScript 文件及其关联对象也是如此吗???
假设我有一个 Var 示例 = "Hello"; 如果我从第 1 页切换到第 2 页,我会保留那个 var ???
我问是因为它与某些功能一起使用而不与其他功能一起使用。我想知道这样做是否正确,是否真的保留了我的变量。
编辑:
function Clinica ()
{
this.id = 0;
this.doentes = new Array();
}
Clinica.prototype.criarDoente = function ()
{
var nome = document.getElementById("nome").value;
var sexoM = document.getElementById("masculino");
var sexoF = document.getElementById("feminino");
var data = document.getElementById("data").value;
var sexo;
alert("ID ATUAL " + this.id);
if (Clinica.verificarCriacaoDoente(nome,sexoM,sexoF,data))
{
if (sexoM.checked)
sexo = "Masculino";
else
sexo ="Feminino";
var d = new Doente(nome, sexo, this.id, data);
this.id++;
this.doentes.push(d);
alert(d.nome);
alert(this.id);
alert(d.dataNascimento);
alert(cl.doentes.length);
apresentarPaginaEmDiv("conteudo","Doentes.html");
}
}
所以我有这个 class Clinica witch 包含一组 Doentes 和一个 ID。 Doente 也是 class。 所以在一个 iFrame 中,我在数组中插入了一堆数据。然后我做你在 CriarDoente 中看到的那些警报,只是为了测试目的。然后我转到另一个页面(通过 iFrame,所以我不重新加载),当我检查数组长度时,它说它未定义。这就是为什么我认为它不保留数据。 注意:cl 是我在这个文件上初始化的 class clinica 的一个对象。
如果在父文档中声明了变量 'example',那么当 iframe 的 src 发生变化时它仍然可用。如果它在 iframe 中声明,则不会。我认为解决方案是如果它需要在页面之间保留,则在父文档中声明它。顺便说一句,您是否出于任何特定原因使用 iframe?只是询问,因为这些天通常不使用它们。