Javascript 替换为JS后不会执行替换的HTML
我想在我的网页上实现YouTube视频的延迟加载。为此,我有一个带有YouTube在HTML注释中的iframe代码的a标签。此外,还有一个onclick事件,它将替换注释标记以激活YouTube代码 以下是HMTL的一个示例:Javascript 替换为JS后不会执行替换的HTML,javascript,html,Javascript,Html,我想在我的网页上实现YouTube视频的延迟加载。为此,我有一个带有YouTube在HTML注释中的iframe代码的a标签。此外,还有一个onclick事件,它将替换注释标记以激活YouTube代码 以下是HMTL的一个示例: <a href="http://www.youtube.com/watch?v=KC2zbOwbeEs&hd=1" class="video-in-link" style="background:url('http://i.ytimg.com/v
<a href="http://www.youtube.com/watch?v=KC2zbOwbeEs&hd=1" class="video-in-link" style="background:url('http://i.ytimg.com/vi/KC2zbOwbeEs/hqdefault.jpg') no-repeat center center; width:500px; height:281px;" onclick="videoInLink(this);">
<!-- xxltxxiframe width="500" height="281" src="http://www.youtube.com/embed/KC2zbOwbeEs?fs=1&feature=oembed&autoplay=1" frameborder="0" allowfullscreenxxgtxxxxltxx/iframexxgtxx -->
</a>
以下是合适的JS:
function videoInLink(anchor){
anchor.innerHTML = anchor.innerHTML.replace(/xxltxx/gi,'<');
anchor.innerHTML = anchor.innerHTML.replace(/xxgtxx/gi,'>');
anchor.innerHTML = anchor.innerHTML.replace(/<!--/,'');
anchor.innerHTML = anchor.innerHTML.replace(/-->/,'');
anchor.style.background="none";
anchor.removeAttribute('href');
anchor.onclick= null;
return false;
}
Firefox和Chrome中的一切都很好:内容被替换,视频开始播放。在IE8中,替换似乎也会发生,但视频无法加载
尝试了几种组合,但没有成功
好吧,Dunhamzzz的想法是对的,他让代码变得更简单。我为每个视频提供商更改了自己的功能,实现工作正常。
因此,IE8在执行JavaScript后激活代码方面没有问题,IE8在我的代码方面有问题
也许我以后会改进代码,但我的问题本身已经得到了回答。谢谢。您可以使用javascript创建iframe节点, 并将其附加到父级,而不是执行此innerHTML攻击。 这里有一个简单的例子:
这是一种非常疯狂的方式,为什么不在函数中编写iframe元素,而不是编写奇怪的搜索和替换语法。问题是,视频提供商不仅仅是YouTube,所有的视频播放器都有不同的实现。如果这样的话,你可以为每个播放器提供不同的功能,至少在运营商改变其嵌入代码时,你可以不用更新所有的视频链接。另外,关于IE8中的问题,可能是因为您将iframe放在锚标记中,请尝试将其更改为div。