我正在使用XMLHttpRequest下载一个网页(标签汤HTML),我想获取输出并将其转换为DOM对象,然后我可以运行XPATH查询。 如何从字符串转换为DOM对象?

似乎一般的解决方案是创建一个隐藏的iframe并将字符串的内容抛入其中。 已经有议论更新的DOMParser支持文本/ HTML,但像Firefox 3.0.1你仍然可以获得一个NS_ERROR_NOT_IMPLEMENTED如果你尝试。

除了使用隐藏的iframe技巧之外还有其他选择吗? 如果没有,那么执行iframe技巧的最佳方法是什么,以便您的代码在任何当前打开的选项卡的上下文之外工作(这样关闭选项卡不会搞砸代码等)?

是为什么我正在寻找iframe黑客以外的解决方案的一个例子,如果我必须编写所有代码以获得强大的解决方案,那么我宁愿继续寻找其他东西。

===============>>#1 票数:9 已采纳

Ajaxian实际上有一篇关于今天从iframe插入/检索html帖子 您可以使用他们在那里发布的js片段。

至于处理浏览器/选项卡的关闭,您可以附加到onbeforeunload( http://msdn.microsoft.com/en-us/library/ms536907 ( VS.85 ) .aspx )事件并做任何你需要做的事情。

===============>>#2 票数:5

试试这个:

var request = new XMLHttpRequest();

request.overrideMimeType( 'text/xml' );
request.onreadystatechange = process;
request.open ( 'GET', url );
request.send( null );

function process() { 
    if ( request.readyState == 4 && request.status == 200 ) {
        var xml = request.responseXML;
    }
}

注意overrideMimeTyperesponseXML
readyState == 4是'已完成'。

===============>>#3 票数:2

尝试创建一个div

document.createElement( 'div' );

然后将标签汤HTML设置为div的innerHTML。 浏览器应该将其处理为XML,然后您可以解析。

innerHTML属性采用一个字符串,该字符串指定文本和元素的有效组合。 设置innerHTML属性后,给定的字符串将完全替换对象的现有内容。 如果字符串包含HTML标记,则在将字符串放入文档时对其进行解析和格式化。

===============>>#4 票数:1

所以你想使用javascript将网页下载为XML对象,但你不想使用网页? 由于您无法控制用户将执行的操作(关闭选项卡或窗口或诸如此类),因此您需要在OSX Dashboard小部件或某个单独的应用程序中执行此操作。 Firefox扩展也可以使用,除非您不得不担心用户关闭浏览器。

===============>>#5 票数:1

除了使用隐藏的iframe技巧之外还有其他选择吗?

不幸的是,不,不是现在。 否则,您指向的microsummary代码将使用它代替。

如果没有,那么做iframe技巧的最佳方法是什么,以便你的代码在任何当前打开的选项卡的上下文之外工作(这样关闭选项卡不会搞砸代码等)?

您引用的代码使用最近的浏览器窗口,因此关闭选项卡不会影响解析。 关闭该浏览器窗口将中止您的负载,但您可以处理它(检测到负载被中止并在另一个窗口中重新启动它)并且它不会经常发生。

你需要一个DOM窗口让iframe正常工作,所以目前还没有干净的解决方案(如果你热衷于使用mozilla解析器)。

  ask by thelsdj translate from so

未解决问题?本站智能推荐: