1

我使用此代码插入<bgsound>标签。

EmbeddedWB.Doc2.body.insertAdjacentHTML('afterBegin','<bgsound src="chimes.wav">');

<bgsound>忽略过时的一秒钟。我正在使用它,因为在 IE6 中它可以工作。

但经过上述操作后,HTML 源代码中没有任何内容。起初我认为上面的代码有问题,直到我尝试了这个:

EmbeddedWB.Doc2.body.insertAdjacentHTML('afterBegin','<p>chimes.wav</p>');

在上面,它正确地在它应该的后面插入<p>标签。<body>那么为什么它不会插入<bgsound>呢?

此外,如果我插入<audio>标签,则会发生一些奇怪的事情:

EmbeddedWB.Doc2.body.insertAdjacentHTML('afterBegin','<audio src="chimes.wav">some audio</audio>');

在此之后,我在源代码中看到的只是some audio</audio>没有开始标签。

我开始怀疑上述方法是否不起作用,因为我处于设计器模式,这可能是它无法插入的原因<bgaudio>吗?也尝试插入一些其他标签......例如评论也不起作用(<!-- comment -->)。

编辑:后来我尝试FEATURE_BROWSER_EMULATION在注册表中设置为 11001(0x2AF9 Internet Explorer 11 模式)后,从编辑模式正确插入了<audio>标签<bgsound>。但它必须在旧模式下是可能的,不是吗?

4

1 回答 1

0

在浪费了很多时间之后,我发现了一些事情:

  • Internet Explorer 控制条在使用时会删除它认为无效的标签,insertAdjacentHTML甚至innerHTML. 似乎没有办法(据我所知)插入控件不会尝试验证的任何自定义 HTML 代码。<bgsound>在我测试它的 IE6 中,它认为<audio>标签是无效的,所以它会剥离它们。它不应该这样做,<bgsound>但确实如此。类似的评论也是如此<!-- comment -->

  • 我发现无法使用insertAdjacentHTMLor插入标签innerHTML。我能做的最好的是将声音标签包装在其他标签中 - 如果我这样做,声音会在插入时播放,但它仍然不存在于源中。最后,在将 HTML 保存到磁盘之前,我将其直接插入到生成的 HTML 中(我标记了声音已添加,在保存 HTML 之前,我将其插入到 HTML 中,而不依赖于 MSHTML)。

  • 切换到标准模式,例如通过使用注册表项FEATURE_BROWSER_EMULATION正确插入标签,但不能在某些版本的 Internet Explorer 上工作(我相信最低版本是 IE9 才能工作),所以它不太灵活。

我没有找到解决方案,但至少我有一些解决方法。也许它可以帮助将来的某个人。

于 2014-03-07T17:59:24.150 回答