为什么我们不能用element.outerHTML属性获取svg元素的outerHTML ?
这种方式是最好的http://jsfiddle.net/33g8g/获取svg源代码?
我正在尝试替换字符串中的视频链接 - 这是我的代码:
$doc = new DOMDocument();
$doc->loadHTML($content);
foreach ($doc->getElementsByTagName("a") as $link)
{
$url = $link->getAttribute("href");
if(strpos($url, ".flv"))
{
echo $link->outerHTML();
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,outerHTML当我试图获取完整超链接的html代码时不起作用<a href='http://www.myurl.com/video.flv'></a>
任何想法如何实现这一目标?
我想从DOM中检索某个带有其属性的标记元素.例如,来自
<a href="#" class="class">
link text
</a>
Run Code Online (Sandbox Code Playgroud)
我希望得到<a href="#" class="class">,可选择关闭</a>,作为字符串或其他对象.在我看来,这类似于检索.outerHTML没有的.innerHTML.
最后,我需要通过jQuery包装其他一些元素.我试过了
var elem = $('#some-element').get(0);
$('#some-other-element').wrap(elem);
Run Code Online (Sandbox Code Playgroud)
但.get()返回包含其内容的DOM元素.也
var elem = $('#some-element').get(0);
$('#some-other-element').wrap(elem.tagName).parent().attr(elem.attributes);
Run Code Online (Sandbox Code Playgroud)
失败,因为elem.attributes返回a NamedNodeMap不能与jQuery一起工作,attr()我无法转换它.承认上面的例子不是很有意义,因为它们还复制了元素的不再唯一ID.但有什么简单的方法吗?非常感谢.
我在这里有一个jsfiddle - http://jsfiddle.net/stevea/QpNbu/3/ - 收集outerHTML所有有的元素class='active'.令我惊讶的是,即使我注释掉了一些HTML,例如:
<!-- <div>'Some inner text'</div> -->
Run Code Online (Sandbox Code Playgroud)
outerHTML仍然把它带回来!这还不能在DOM中,所以我想知道在哪里outerHTML.
感谢您的任何见解.
我创建了一个通用元素
var element = document.createElement(null);
document.body.appendChild(element);
Run Code Online (Sandbox Code Playgroud)
之后,使用 externalHTML 更改该元素
element.outerHTML = "<div> hello there </div>";
Run Code Online (Sandbox Code Playgroud)
元素正确显示。然而,变量本身“元素”并不以任何方式反映变化。检索该特定元素的唯一方法似乎是做类似的事情......
element.outerHTML = "<div id='hi'> hello there </div>";
element = document.getElementById("hi");
Run Code Online (Sandbox Code Playgroud)
看起来很丑。有没有更好的方法和/或我错过了什么?
我的代码从Ajax调用中获取JSON,该调用包含XML,并通过它读取一些信息.
虽然XML的解析在Chrome中运行良好,但它不在IE中,因为在IE中outerHTML返回undefined.
我已经经历了几个帖子并尝试了几种可能的解决方案但没有成功.
JavaScript代码是:
$.ajax({
url: 'getJSONwithXML.do',
type:'POST',
data:'',
dataType: 'json',
cache: false
}).done(function(data) {
var jsonResp = JSON.parse(data.data.respuesta);
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(jsonResp,"text/xml");
var texto = $(xmlDoc).find('texto').prop('outerHTML');
console.log(texto); // <--- undefined in IE
$('body').append('<div>' + texto + '</div>');
});
Run Code Online (Sandbox Code Playgroud)
我得到的xml jsonResp是:
<?xml version="1.0" encoding="UTF-16"?>
<envio>
<version>1.0.0</version>
<anuncios>
<remitente>
<nodoRemitente>Nodo Remitente</nodoRemitente>
</remitente>
<anuncio>
<emisor>
<nodoEmisor>Nodo Emisor</nodoEmisor>
</emisor>
<metadatos>
<id>16249</id>
</metadatos>
<contenido>
<texto>
<p>
Notificación de prueba
</p>
<p>
Notificación de prueba …Run Code Online (Sandbox Code Playgroud) 重置outerHTML属性document.body有一个奇怪的副作用:它<head></head>在DOM之前添加额外的空,就在之前body:
head { display: inline; counter-increment: h; border: 1px solid; }
head:last-of-type::after { content: 'Head elements count: ' counter(h); }
[onclick]::after { content: attr(onclick); }Run Code Online (Sandbox Code Playgroud)
<button onclick="document.body.outerHTML=document.body.outerHTML"></button>Run Code Online (Sandbox Code Playgroud)
所有浏览器似乎都是一致的.我被告知它被指定为这种方式,但是无法在这个问题上挖掘权威的标准立场,甚至在讨论档案中都没有提及.你知道这方面的背景,还是有一些技术原因必须这样?任何的想法?
基于这个问题,我尝试以两种不同的方式获取外部HTML .不幸的是,他们都没有给出预期的结果:
HTML:
<div id='my_div'>Hello</div>
Run Code Online (Sandbox Code Playgroud)
JS:
$(function() {
document.write('[' + $('#my_div').clone().wrapAll("<div />").parent().get(0).innerHTML + ']<br />');
document.write('[' + (new XMLSerializer().serializeToString(document.getElementById('my_div'))) + ']');
});
Run Code Online (Sandbox Code Playgroud)
输出是:
[
Hello
]
[
Hello
]
Run Code Online (Sandbox Code Playgroud)
我期待以下结果: <div id='my_div'>Hello</div>
我究竟做错了什么 ?
开始实现Javascript,我需要进行故障排除,并希望将HTML输出到屏幕而不进行渲染.我可以通过访问元素(在IE中)
document.getElementById("test").outerHTML
Run Code Online (Sandbox Code Playgroud)
我想,但我不能证明我能确定的是什么.
那么我该怎么做才能让document.write显示整个元素,包括标签?