Javascript HTML5视频不';当通过DOMParser呈现时,Safari中不会显示(通过innerHTML呈现效果良好)
(注意:关于不在safari上渲染视频有很多问题。这个问题是关于在safari中使用DOMParser渲染视频。如果我使用innerHTML渲染视频,一切都可以正常工作。) 我有最简单的HTML 5视频,通过Javascript HTML5视频不';当通过DOMParser呈现时,Safari中不会显示(通过innerHTML呈现效果良好),javascript,safari,domparser,Javascript,Safari,Domparser,(注意:关于不在safari上渲染视频有很多问题。这个问题是关于在safari中使用DOMParser渲染视频。如果我使用innerHTML渲染视频,一切都可以正常工作。) 我有最简单的HTML 5视频,通过DOMParser呈现如下: var htmlStr=` 您的浏览器不支持HTML5视频。 document.getElementById('test-vid').appendChild(doc.firstChild); `; var doc=new DOMParser().parseFr
DOMParser
呈现如下:
var htmlStr=`
您的浏览器不支持HTML5视频。
document.getElementById('test-vid').appendChild(doc.firstChild);
`;
var doc=new DOMParser().parseFromString(htmlStr,“text/xml”);
这在chrome中运行良好,但在Safari中,视频不会被渲染。我只看到白色的屏幕。
然而,如果我通过innerHTML渲染它,一切正常,视频也会显示出来
任何人都可以就Safari中的DOMParser的问题提供建议。显示了对DOMParser的完全Safari支持
在safari的多个版本上测试,即版本12.1.1(14607.2.6.1.1)和版本11.1等。刚刚测试,视频在屏幕上并加载(html检查器、网络流量和DOM中加载的视频触发的caplay事件可以确认) 如果您尝试切换选项卡,然后返回到视频选项卡,视频将显示,但没有控件,尽管我可以通过触发事件来播放 这似乎是一个狩猎问题,可能与其安全策略有关 视频 代码笔JS
var htmlStr = `
<video id="myvideo" xmlns="http://www.w3.org/1999/xhtml" controls="">
<source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4"/>
Your browser does not support HTML5 video.
</video>`;
var doc = new DOMParser().parseFromString(htmlStr, "text/xml");
document.getElementById('test-vid').appendChild(doc.firstChild);
window.onclick = function(){
document.getElementById('myvideo').play();
}
document.getElementById('myvideo').addEventListener('canplay', function(){
console.log('canplay');
})
var htmlStr=`
您的浏览器不支持HTML5视频。
`;
var doc=new DOMParser().parseFromString(htmlStr,“text/xml”);
document.getElementById('test-vid').appendChild(doc.firstChild);
window.onclick=function(){
document.getElementById('myvideo').play();
}
document.getElementById('myvideo')。addEventListener('canplay',function(){
console.log('canplay');
})
不幸的是,Safari回购协议不是公开的,因此检索已修复和未修复的问题有点困难,但我可以肯定地说,您的代码是正确的,并且Safari有一个bug(切换选项卡时,请参阅上面的不一致行为).请注意,您只需使用代码笔复制并粘贴代码即可。这样您就不会犯错误,比如将JavaScript放入HTML字符串变量中……;)@HereticMonkey有很多场景,实际上可以在字符串中包含HTML。模板文本通常用于在javascript中存储模板。@MosèRaguzzini当然,但我说的不是这个错误。我说的是将JavaScript放入HTML字符串中。
DOMParser
不会将其解析为JavaScript,而只解析为文本。。。在任何情况下,如果您将链接的CodePen与此处显示的代码进行比较,我的评论将更有意义。好的,在CodePen中,javascript在外部(包括Appenshild),我想错误是从penHm复制/粘贴的,使用Safari v13.0.2(14608.2.40.1.2)工作时非常有魅力在macOS Mojave上…你能告诉我你测试的是什么版本的操作系统和浏览器吗?你能提供截图吗?我已经在OSX High Sierrahoa上的Safari 11.1(13605.1.33.1.2)中进行了测试!Safari 11.1没有显示视频,但当我切换选项卡时,它显示了。你能确认吗?我已经添加了它的视频和代码来检查视频是否也存在,没有切换选项卡,因为canplay事件被触发
var htmlStr = `
<video id="myvideo" xmlns="http://www.w3.org/1999/xhtml" controls="">
<source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4"/>
Your browser does not support HTML5 video.
</video>`;
var doc = new DOMParser().parseFromString(htmlStr, "text/xml");
document.getElementById('test-vid').appendChild(doc.firstChild);
window.onclick = function(){
document.getElementById('myvideo').play();
}
document.getElementById('myvideo').addEventListener('canplay', function(){
console.log('canplay');
})