你可以追加来自XMLHttpRequest的一个隐藏的DIV中的反应,然后调用getElementById
以获得所需的元素。稍后在完成后移除div。或者也许创建一个函数来处理这个问题。
function addNinjaNodeToDOM(html) {
var ninjaDiv = document.createElement("div");
ninjaDiv.innerHTML = html;
ninjaDiv.style.display = 'none';
return ninjaDiv;
}
var wrapper = addNinjaNodeToDOM(HttpRequest.innerText);
var requiredNode = wrapper.getElementById("WantedElement");
// do something with requiredNode
document.body.removeChild(wrapper); // remove when done
它附加到DOM的唯一原因是因为getElementById
不会,除非DOM树的一部分它的工作。见MDC。
但是,您仍然可以在分离的DOM节点上运行选择器和XPath查询。这会让你免于让你将元素附加到DOM。
var superNinjaDiv = document.createElement('div');
superNinjaDiv.innerHTML = html;
var requiedNode = superNinjaDiv.querySelector("[id=someId]");
谢谢! 我总是忘记我不必在小工具中使用跨浏览器,所以我可以使用ActiveX。 – 2010-04-14 13:44:42
@ m6a-uds:这可能是开发小工具的最大好处,也是专有IE功能最大的适用范围。我已经构建到小工具中的一些内容将无法在另一个浏览器上运行:-) – 2010-04-14 13:50:36