我有一个包含Object标签的HTML页面,用于托管一个嵌入式HTML页面。
<object style="border: none;" standby="loading" id="contentarea"
width="100%" height="53%" type="text/html" data="test1.html"></object>
然而,我需要能够更改对象标签中的HTML页面。当前的代码似乎会创建对象的克隆,并用其替换现有的对象,就像这样:
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);
}
这似乎是一个相当糟糕的做法。有人知道更改嵌入页面的正确方法吗?
谢谢!
编辑:针对下面的回答,这里是我现在使用的完整页面源代码。使用setAttribute似乎不会更改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>
Test1.html和Test2.html页面只是简单的HTML页面,分别显示文本Test1和Test2。