Изменение содержимого данных в теге объекта в HTML - PullRequest
18 голосов
/ 24 марта 2009

У меня есть HTML-страница, которая содержит тег Object для размещения встроенной 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» соответственно.

Ответы [ 14 ]

0 голосов
/ 25 июня 2018

Основная причина этой проблемы - использование "/" в локальных файлах.

Неправильный код:

 var obj = document.getElementById("hostedhtml");
 obj.setAttribute('data', "pages\page2.html");

Правильный код:

 var obj = document.getElementById("hostedhtml");
 obj.setAttribute('data', "pages\\page2.html");
0 голосов
/ 21 апреля 2015

var content_area = document.getElementById("contentarea");
    content_area.data = newUrl;

Обновление объекта в Chrome версии 42.0.2311.90 м

0 голосов
/ 02 марта 2013

Другой способ сделать это, вы можете встроить объект в DIV

var newUrl = 'http://example.com';
var divEl = document.getElementById('divID');
var objEl = document.getElementById('objID');
objEl.data = newUrl;
// Refresh the content
divEl.innerHTML = divEl.innerHTML;
0 голосов
/ 24 марта 2009

Изменение атрибута данных должно быть простым. Тем не менее, он может работать не во всех браузерах.

Если контент всегда HTML, почему бы не использовать iframe?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...