XMLHttpRequest 和 innerHTML 的快速技巧
XMLHttpRequest 是现代 DHTML 最佳秘诀之一。如果您以前从未遇到过它,它是一种在不刷新整个页面的情况下向托管 Web 服务器发出 HTTP 调用的方法——一种增强型的远程脚本。它最初是 Microsoft 的扩展,已被 Mozilla 浏览器系列和(从 1.2 版开始)Safari 采用。前面讨论过的 Sarissa 库为不同的浏览器提供了抽象层,或者对于更轻量级的方法,来自 jibbering.com 的此代码(它使用 IE 的 JScript 条件编译)可以完美运行。
充分利用 XMLHttpRequest 通常涉及使用服务器端生成的 XML,您的 JavaScript 应用程序可以检索、解析和用于更复杂的逻辑中。但是,对于快速修复,以下代码将从 URL 加载 HTML 片段并将其直接插入页面:
function loadFragmentInToElement(fragment_url, element_id) { var element = document.getElementById(element_id); element.innerHTML = '<p><em>Loading ...</em></p>'; xmlhttp.open("GET", fragment_url); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { element.innerHTML = xmlhttp.responseText; } } xmlhttp.send(null); }
使用要插入的 HTML 片段的 URL 和应显示该片段的元素的 ID 调用上述函数。它依赖于 jibbering.com 代码来设置 xmlhttp 变量。
它绝对快速且简陋,但它也是 XMLHttpRequest 扩展功能的绝佳快速演示。
XMLHttpRequest 和 innerHTML 常见问题解答 (FAQ)
innerHTML 和 outerHTML 都是文档对象模型 (DOM) 中元素的属性。它们之间的主要区别在于它们返回和修改的内容。innerHTML 获取或设置元素的 HTML 内容(内部 HTML),而 outerHTML 获取或设置 HTML 内容,包括元素的外部包装器。换句话说,innerHTML 处理元素内部的内容,而 outerHTML 处理整个元素,包括标签。
虽然 innerHTML 是一种将 HTML 注入网页的便捷方法,但如果使用不当,可能会带来安全风险。如果您将用户生成的内容插入页面并使用 innerHTML,则可能会面临跨站点脚本 (XSS) 攻击,其中恶意脚本被注入您的网页。为避免这种情况,请始终清理用户生成的内容或使用更安全的方法,例如 textContent 或 createElement。
您可以通过连接每个元素的 HTML 字符串来使用 innerHTML 添加多个元素。例如,如果您想添加两个段落,您可以执行以下操作:
element.innerHTML = '<code>element.innerHTML = '<p>第一段。</p>' '<p>第二段。</p>';
第一段。
我可以使用 innerHTML 插入 SVG 元素吗? 是的,您可以使用 innerHTML 插入 SVG 元素。但是,有一些注意事项。使用 innerHTML 时不会保留 SVG 命名空间,这可能会导致某些浏览器出现问题。如果您遇到问题,请考虑改用 createElementNS 和 appendChild 方法。
您的 innerHTML 不起作用可能有几个原因。一个常见的原因是您尝试修改的元素在脚本运行时不存在。如果您的脚本在页面主体之前加载,则可能会发生这种情况。要解决此问题,您可以将脚本移动到主体标签的底部,或者将代码包装在 window.onload 函数中。
不可以,innerHTML 不支持 XML 文档。它是 HTML DOM 中 HTMLElement 接口的属性,在 XML DOM 中不可用。如果您使用 XML,则需要改用 createElement 和 appendChild 等方法。
您可以通过将 innerHTML 属性设置为空字符串来删除节点的所有子元素。例如:
element.innerHTML = '';
这将删除元素的所有子元素。
不可以,innerHTML 只能与元素节点一起使用。如果您想将文本插入文本节点,则应改用 nodeValue 或 textContent 属性。
您可以通过设置父元素的 innerHTML 属性来使用 innerHTML 替换元素。这将替换父元素的所有子元素,包括您要定位的元素。例如:
parentElement.innerHTML = '<code>parentElement.innerHTML = '<p>新段落。</p>';
新段落。
是的,innerHTML 在所有主要浏览器(包括 Internet Explorer)中都受支持。但是,浏览器处理 innerHTML 的某些方面的处理方式有所不同,因此最好在多个浏览器中测试您的代码。
以上是快速提示:xmlhttprequest和innerhtml的详细内容。更多信息请关注PHP中文网其他相关文章!