Javascript 解析和处理作为字符串输入的DOM
事情是这样的 我有一个文本区(ID为“input_container”),里面充满了HTML代码,简单的例子是:Javascript 解析和处理作为字符串输入的DOM,javascript,jquery,html,xml,dom,Javascript,Jquery,Html,Xml,Dom,事情是这样的 我有一个文本区(ID为“input_container”),里面充满了HTML代码,简单的例子是: <!doctype html> <html> <head></head> <body> <a href="www.example.com">the other place</a> </body> </html> 用那个DOM 我已经尝试
<!doctype html>
<html>
<head></head>
<body>
<a href="www.example.com">the other place</a>
</body>
</html>
用那个DOM
我已经尝试过的
我试图用jQuery解析它,但发生了一件有趣的事情——jQuery删除了DOCTYPE和所有的头,只留下了
<a href="www.example.com">the other place</a>
我最初的方法是:
我还没有找到解决办法。有什么想法吗?这可能是jQuery上的错误还是什么?如果需要将整个内容作为元素,可以尝试使用
iframe
//创建并附加新的iframe
var iframe=document.createElement('iframe');
document.documentElement.appendChild(iframe);
//设置其内部HTML
iframe.contentWindow.document.documentElement.innerHTML=varWithDOM;
//抓住窗户`
var win=iframe.contentWindow;
//拆下iframe
document.documentElement.removeChild(iframe);
抓取头部的演示:
原始答案
与其说jQuery删除它,不如说它是浏览器。这种行为在不同的浏览器中会有所不同
您可以尝试的一件事是将整个内容放在一个
中,以便成为您的上下文
$(“”+varWithDom+“”)。查找(…)
现在剥离什么并不重要(除非您确实需要
中的某些内容),因为它们都是外部div
的后代
如果您不想这样做,那么您需要执行两次查询,一次使用.find()
,一次使用.filter()
varels=$(varWithDom);
var links=els.find('a[href]').add(els.filter('a[href]'));
如果需要将整个内容作为元素,可以尝试使用iframe
//创建并附加新的iframe
var iframe=document.createElement('iframe');
document.documentElement.appendChild(iframe);
//设置其内部HTML
iframe.contentWindow.document.documentElement.innerHTML=varWithDOM;
//抓住窗户`
var win=iframe.contentWindow;
//拆下iframe
document.documentElement.removeChild(iframe);
抓取头部的演示:
原始答案
与其说jQuery删除它,不如说它是浏览器。这种行为在不同的浏览器中会有所不同
您可以尝试的一件事是将整个内容放在一个
中,以便成为您的上下文
$(“”+varWithDom+“”)。查找(…)
现在剥离什么并不重要(除非您确实需要
中的某些内容),因为它们都是外部div
的后代
如果您不想这样做,那么您需要执行两次查询,一次使用.find()
,一次使用.filter()
varels=$(varWithDom);
var links=els.find('a[href]').add(els.filter('a[href]'));
您真正关心哪些部分?为什么jQuery除去
的内容之外的所有内容都很重要?根据jQuery文档,这不是一个jQuery错误-这是浏览器内置的.innerHTML
实现在丢弃标记。@Mö.filter()
将需要。在这种情况下,只需将整个内容包装在
as中。为什么需要头部的元素?为什么需要DOCTYPE?你在这里的意图是什么?你真正关心的是什么?为什么jQuery除去
的内容之外的所有内容都很重要?根据jQuery文档,这不是一个jQuery错误-这是浏览器内置的.innerHTML
实现在丢弃标记。@Mö.filter()
将需要。在这种情况下,只需将整个内容包装在
as中。为什么需要头部的元素?为什么需要DOCTYPE?你在这里的意图是什么?我试过:(它不起作用。jQuery仍在剥离和doctype,我需要将HTML作为一个整体…有趣的是,当我尝试在页面中接近jQuery选择器时,我成功了-$('head'))工作正常,为什么不使用外部DOM?@user1087787:我使用了一个使用iframe
的解决方案进行了更新。试一试。刚刚在IE9和FF中测试了它-不幸的是,他们在解析它时都遇到了问题,FF没有找到标记,IE给了我这个错误:消息:无法获取属性“innerHTML”的值:对象为null或und定义的行:832 Char:3 Code:0 URI:Message:无法获取属性“find”的值:对象为null或未定义的行:4 Char:21213 Code:0 URI:我还从jsfiddle()运行了脚本,它在IE9和FF中返回错误…有什么建议吗?我尝试了:(这不起作用。jQuery仍在剥离和doctype,我需要将HTML作为一个整体…有趣的是,当我尝试在页面中接近jQuery选择器时,我成功了-$('head'))工作正常,为什么不使用外部DOM?@user1087787:我使用了一个使用iframe
的解决方案进行了更新。试一试。刚刚在IE9和FF中测试了它-不幸的是,他们在解析它时都遇到了问题,FF没有找到标记,IE给了我这个错误:消息:无法获取属性“innerHTML”的值:对象为null或und定义行:832 Char:3 Code:0 URI:Message:无法获取属性“find”的值:对象为null或未定义行:4 Char:21213 Code:0 URI:我还从jsfiddle()运行了脚本,它在IE9和FF中返回错误。。。
<a href="www.example.com">the other place</a>