javascript - 从 XMLHttpRequest 中提取单个元素

标签 javascript ajax windows-desktop-gadgets

我实际上正在制作一个侧边栏小工具(基于 AJAX),并且我正在寻找一种从 AJAX 请求中提取单个元素的方法。

我发现的唯一方法就是做类似的事情:

var temp = document.createElement("div");
temp.innerHTML = HttpRequest.innerText;
document.body.appendChild(temp);
temp.innerHTML = document.getElementByID("WantedElement").innerText;

但是它非常丑陋,我想直接从请求中提取 WantedElement 而不将其添加到实际文档中...

谢谢!

最佳答案

如果您可以控制数据,那么您的做法可能是最好的方法。这里的其他答案都有其优点,但也都存在相当大的缺陷。例如,querySelector() 方法仅适用于在主机上以 IE8 模式运行的 Windows 桌面小工具。正则表达式对于解析 HTML 特别不可靠,不应使用。

如果您无法控制数据或者数据不是通过安全协议(protocol)传输,则您应该更关心安全性而不是代码美观 - 您可能会给小工具和主机带来潜在的安全风险机器通过将未经净化的 HTML 插入到文档中。由于小工具以用户或管理员级别权限运行,因此明显的安全风险是不受信任的源/MITM脚本注入(inject),为恶意脚本留下漏洞,对其运行的计算机造成严重破坏。

一个潜在的解决方案是使用 htmlfile ActiveXObject:

function getElementFromResponse(divId)
{
    var h = new ActiveXObject("htmlfile");
    h.open();

    // disable activex controls
    h.parentWindow.ActiveXObject = function () {};

    // write the html to the document
    h.write(html);

    h.close();
    return h.getElementById("divID").innerText;
}

您还可以使用 IE8 的 toStaticHTML()方法,但您的小工具需要在 IE8 模式下运行。

关于javascript - 从 XMLHttpRequest 中提取单个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2614330/

相关文章:

javascript - 扩展 HTML 模板?

javascript - 让JS设置发布数据

javascript - XHR onProgress 完成

c# - 如何将小工具集成到我的 .NET 应用程序中

Javascript XMLHttpRequest : Ignore invalid SSL Certificate

javascript - 如何防止子节点上的父事件处理程序?

JavaScript 全局化 : How to compare two dates?

javascript - HTML JavaScript 随机数选择

javascript - 使用 Ajax.Updater 获取 javascript 文件 (prototypejs)

javascript - 如何使用 Windows Sidebar Gadget API 删除文件?