使用 innerHTML 重新加载页面的中心窗格

Posted

技术标签:

【中文标题】使用 innerHTML 重新加载页面的中心窗格【英文标题】:Use innerHTML to reload the center pane of the page 【发布时间】:2012-06-10 20:29:01 【问题描述】:

我想使用下面的方法来更新页面的中心窗格,而不是使用 iframe。

我想在以下方面获得一些帮助。 如果我想将另一个 html 页面加载到中心窗格中,它的正确语法是什么?

document.getElementById( 'centerPane' ).innerHTML.??? = 'SampleHTML.htm' ;

innerHTML 之后我需要获取什么属性?

或者我应该使用其他调用来完成。

【问题讨论】:

这里需要 AJAX。试试 jQuery 的 AJAX 调用。 【参考方案1】:

如果您没有使用 jQuery 或其他内置 ajax 方法的库:

var setHtml = function (element, url) 

    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function () 
        if (xhr.readyState == 4 && xhr.status == 200) 
            element.innerHTML = xhr.responseText;
        
    ;

    xhr.timeout = 10000;
    xhr.open('GET', url, true);
    xhr.send();
;

然后像这样简单地调用 setHtml 函数:

setHtml(document.getElementById('centerPane'), 'SampleHTML.htm');

【讨论】:

语法错误。应该是setHtml(document.getElementById('centerPane'), 'SampleHTML.htm'); Google 调试器显示“未捕获的类型错误:无法将属性 'innerHTML' 设置为 null(重复 2 次)。”在这一行“element.innerHTML = xhr.responseText;”之后出现错误函数 UpdateCenterPane(dest) var setHtml = function(element, url) var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() if (xhr.readyState == 4 && xhr.status == 200) element.innerHTML = xhr.responseText; ; xhr.timeout = 10000; xhr.open('GET', url, true); xhr.send(); ; setHtml(dojo.byId('centerPane'),dest); 这是因为元素为空。检查 dojo.byId('centerPane') 并确保它返回一个元素而不是 null。【参考方案2】:

如果你有机会使用 jQuery,它可以很简单:

$('#centerPage').load('SampleHTML.htm');

【讨论】:

我希望他使用 jQuery,否则他可能不得不手动拼凑一个 XHR 对象。 感谢所有快速响应...我没有使用 jQuery。我正在使用 html/dojo。中心窗格中的数据通过 dojox.grid.DataGrid 呈现。还有什么建议吗?再次感谢..【参考方案3】:

您必须使用 ajax 来执行此操作。示例:http://jsfiddle.net/wGw9X/1/

您也可以(应该)使用 jQuery 来简化它并使其更适合跨浏览器编译。在 jquery 中它只是一行代码。

编辑:更新 jsfiddle 链接以使用更好的示例加载文件。

【讨论】:

感谢所有快速响应...我没有使用 jQuery。我正在使用 html/dojo。中心窗格中的数据通过 dojox.grid.DataGrid 呈现。我使用 dojox.data.JsonRestStore 来获取数据,然后用 DataGrid 渲染它。我如何通过 jQuery 做到这一点?还有什么建议吗?再次感谢。

以上是关于使用 innerHTML 重新加载页面的中心窗格的主要内容,如果未能解决你的问题,请参考以下文章

使用 Framework7 强制重新加载页面

Javascript在同一页面上显示innerHTML

重新加载图像而不刷新页面

根据 innerHTML 内容重新加载浏览器

使用 InnerHTML 加载 html 页面时保持 CSS 样式

如何在 HTMX 中重新加载页面刷新时的所有部分