相关疑难解决方法(0)

用JS解析HTML字符串

我搜索了一个解决方案,但没有任何相关性,所以这是我的问题:

我想解析一个包含HTML文本的字符串.我想用JavaScript做.

我试过这个库,但它似乎解析了我当前页面的HTML,而不是字符串.因为当我尝试下面的代码时,它会更改我的页面标题:

var parser = new HTMLtoDOM("<html><head><title>titleTest</title></head><body><a href='test0'>test01</a><a href='test1'>test02</a><a href='test2'>test03</a></body></html>", document);
Run Code Online (Sandbox Code Playgroud)

我的目标是从HTML外部页面中提取链接,就像字符串一样.

你知道一个API来做吗?

html javascript dom html-parsing

227
推荐指数
10
解决办法
36万
查看次数

将任意HTML插入DocumentFragment

我知道最近已经讨论过添加innerHTML到文档片段,并且希望能够将其包含在DOM标准中.但是,在此期间您应该使用的解决方法是什么?

就是这样

var html = '<div>x</div><span>y</span>';
var frag = document.createDocumentFragment();
Run Code Online (Sandbox Code Playgroud)

我想要divspan内部和内部frag都有一个简单的单行.

没有循环的奖励积分.jQuery是允许的,但我已经尝试过$(html).appendTo(frag); frag之后仍然是空的.

javascript jquery documentfragment

52
推荐指数
5
解决办法
3万
查看次数

我可以将整个HTML文档加载到Internet Explorer中的文档片段中吗?

这是我一直遇到的一些困难.我有一个本地客户端脚本,需要允许用户获取远程网页并搜索结果页面的表单.为了做到这一点(没有正则表达式),我需要将文档解析为完全可遍历的DOM对象.

我想强调的一些限制:

  • 我不想使用库(比如jQuery).我需要在这里做太多的臃肿.
  • 在任何情况下都不应执行远程页面中的脚本(出于安全原因).
  • getElementsByTagName需要提供DOM API等.
  • 它只需要在Internet Explorer中工作,但至少在7中工作.
  • 让我假装我无法访问服务器.我这样做,但我不能用它.

我试过的

假设我在变量中有一个完整的HTML文档字符串(包括DOCTYPE声明)html,这是我到目前为止所尝试的:

var frag = document.createDocumentFragment(),
div  = frag.appendChild(document.createElement("div"));

div.outerHTML = html;
//-> results in an empty fragment

div.insertAdjacentHTML("afterEnd", html);
//-> HTML is not added to the fragment

div.innerHTML = html;
//-> Error (expected, but I tried it anyway)

var doc = new ActiveXObject("htmlfile");
doc.write(html);
doc.close();
//-> JavaScript executes
Run Code Online (Sandbox Code Playgroud)

我也尝试从HTML中提取<head><body>节点,并将它们添加到<HTML>片段内的元素,仍然没有运气.

有没有人有任何想法?

html javascript internet-explorer dom

42
推荐指数
1
解决办法
2万
查看次数

尝试将DOMParser与节点js一起使用

尝试在我的js代码中使用DOMParser时遇到问题.在我的代码中,我通过xmlhttp.responseText soap响应检索xml文件.我希望能够以JSON格式访问其元素,因此我的代码如下所示:

var xml = new DOMParser();
xml = xml.parseFromString(xmlhttp.responseText, 'text/xml');
var result = xmlToJson(xml);
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:ReferenceError:未定义DOMParser

编辑:这个链接对我不起作用,因为我的javascript不在HTML页面中,因为它是一个node.js文件. JavaScript DOMParser访问innerHTML和其他属性

javascript xml node.js

35
推荐指数
5
解决办法
4万
查看次数

innerHTML:如何避免

我正在编写一个插件,它将表情符号转换为特定网站的文本块中的图像.简单的答案是使用正则表达式来检测innerHTML上的触发器文本并插入img标记,然后将字符串传递回innerHTML部分中的dom元素.DOM元素块可能已经在innerHTML部分中具有锚<a>和/或文本格式<b>,<i>,<u>.

例如

    var textBlock = pItems[i].innerHTML;
    var kissSource = 'https://mail.google.com/mail/e/35D';
    textBlock = textBlock.replace(/(^|[^&lt;]|[^&gt;]):\*/g, "<img class='emoticon' src='" + kissSource + "' />");
 -->      pItems[i].innerHTML = textBlock;  //<-can I avoid this to be in compliance with Mozilla addons reqmnts
Run Code Online (Sandbox Code Playgroud)

我搜索了几个小时如何将DOM(或HTML字符串)转换为XML(我知道:HTML!= XLM 如何将HTML作为XML读取?但也许是div的一部分?),这反过来可能是转换为JSON,后者又可以转换回以下DOM:https: //developer.mozilla.org/en-US/docs/XUL/School_tutorial/DOM_Building_and_HTML_Insertion?redlocale = en-US&redctsctslug = XUL_School%2FDOM_Building_and_HTML_Insertion#JSON_Templating

我不知道jQuery,所以如果有可能使用javascript,那将是理想的.

我是否应该在不针对innerHTML运行正则表达式的情况下解决此问题,从而避免问题?

非常感谢,JennaS

javascript xml-serialization firefox-addon

7
推荐指数
1
解决办法
1747
查看次数

JavaScript 中的 DOM 解析

一些背景:
我正在使用 JavaScript 开发基于 Web 的移动应用程序。HTML 呈现基于 Safari。跨域策略已禁用,因此我可以使用 XmlHttpRequests 调用其他域。这个想法是解析外部 HTML 并获取特定元素的文本内容。
过去我是逐行解析文本,找到我需要的行。然后获取标记的内容,它是该行的子字符串。这很麻烦,每次目标html发生变化时都需要大量维护。
所以现在我想将 html 文本解析为 DOM 并在其上运行 css 或 xpath 查询。
它运作良好:

$('<div></div>').append(htmlBody).find('#theElementToFind').text()
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,当我使用浏览器将 html 文本加载到 DOM 元素时,它会尝试加载所有外部资源(图像、js 文件等)。虽然它没有造成任何严重的问题,但我想避免这种情况。

现在的问题是:
如何在浏览器不加载外部资源或运行 js 脚本的情况下将 html 文本解析为 DOM?
我一直在思考的一些想法:

  • 使用 createDocument 调用 ( document.implementation.createDocument())创建新文档对象,但我不确定它是否会跳过外部资源的加载。
  • 在 JS 中使用第三方 DOM 解析器 - 我尝试过的唯一一个处理错误非常糟糕
  • 使用 iframe 创建新文档,这样具有相对路径的外部资源不会在控制台中抛出错误

javascript dom xmlhttprequest innerhtml cross-domain

5
推荐指数
1
解决办法
5418
查看次数

试图用DOMParser解析html字符串的麻烦

这里是片段:

html  = "<!doctype html>";
html += "<html>";
html += "<head><title>test</title></head>";
html += "<body><p>test</p></body>";
html += "</html>";

parser = new DOMParser();

dom = parser.parseFromString (html, "text/html");
Run Code Online (Sandbox Code Playgroud)

尝试执行这些行时出现错误:

错误:组件返回失败代码:0x80004001(NS_ERROR_NOT_IMPLEMENTED)[nsIDOMParser.parseFromString]

我试着弄清楚发生了什么,但代码似乎是正确的,我在网上搜索,我来到这里没有任何线索.

你以前遇到过这种失败吗?如果是的话,这个bug隐藏在哪里?

javascript xml-parsing domparser

4
推荐指数
1
解决办法
8526
查看次数

在JavaScript中严格的HTML解析

在Google Chrome(Canary)上,似乎没有字符串可以使DOM解析器失败.我正在尝试解析一些HTML,但如果HTML不完全,100%,有效,我希望它显示错误.我试过了明显的事:

var newElement = document.createElement('div');
newElement.innerHTML = someMarkup; // Might fail on IE, never on Chrome.
Run Code Online (Sandbox Code Playgroud)

我也在这个问题上试过这个方法.无效标记不会失败,即使是我能生成的最无效的标记也是如此.

那么,至少有一些方法可以在Google Chrome中"严格"解析HTML吗?我不想自己使用令牌或使用外部验证实用程序.如果没有其他选择,那么严格的XML解析器就可以了,但某些元素不需要在HTML中关闭标记,最好不要失败.

html javascript html-parsing

3
推荐指数
1
解决办法
2611
查看次数