Tengo una página HTML que contiene una etiqueta Object para alojar una página HTML incrustada.Modificación del contenido de datos en una etiqueta de objeto en HTML
<object style="border: none;" standby="loading" id="contentarea"
width="100%" height="53%" type="text/html" data="test1.html"></object>
Sin embargo, tengo que cambiar la página HTML dentro de la etiqueta del objeto. El código actual parece crear un clon del objeto y reemplaza el objeto existente con él, así:
function changeObjectUrl(newUrl)
{
var oContentArea = document.getElementById("contentarea");
var oClone = oContentArea.cloneNode(true);
oClone.data = newUrl;
var oPlaceHolder = document.getElementById("contentholder");
oPlaceHolder.removeChild(oContentArea);
oPlaceHolder.appendChild(oClone);
}
Esto parece una forma bastante pobre de hacer esto. ¿Alguien sabe la forma "correcta" de cambiar la página incrustada?
Gracias!
EDIT: En respuesta a las respuestas a continuación, aquí está la fuente completa de la página que estoy utilizando. El uso de setAttribute no parece cambiar el contenido de la etiqueta Object.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test</title>
<script language="JavaScript">
function doPage()
{
var objTag = document.getElementById("contentarea");
if (objTag != null)
{
objTag.setAttribute('data', 'Test2.html');
alert('Page should have been changed');
}
}
</script>
</head>
<body>
<form name="Form1" method="POST">
<p><input type="button" value="Click to change page" onclick="doPage();" /></p>
<object style="visibility: visible; border: none;" standby="loading data" id="contentarea" title="loading" width="100%" height="53%" type="text/html" data="test1.html"></object>
</form>
</body>
</html>
Las páginas Test1.html y Test2.html son páginas HTML simples que muestran el texto 'Test1' y 'Prueba2', respectivamente.
Esto no funcionó para mí. Ambas 'object.location' y' object.parentWindow' no están definidas. –