Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析和处理作为字符串输入的DOM_Javascript_Jquery_Html_Xml_Dom - Fatal编程技术网

Javascript 解析和处理作为字符串输入的DOM

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 我已经尝试

事情是这样的

我有一个文本区(ID为“input_container”),里面充满了HTML代码,简单的例子是:

<!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>