在Internet Explorer设计模式下插入<bgsound> </bgsound>

时间:2014-03-07 01:55:11

标签: delphi webbrowser-control twebbrowser tembeddedwb

我使用此代码插入<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>个标记从编辑模式。但它必须有可能在旧模式下不是吗?

1 个答案:

答案 0 :(得分:0)

经过大量的浪费时间后,我发现了一些事情:

  • 使用insertAdjacentHTML甚至innerHTML时,Internet Explorer控件会将其认为无效的标记剥离。似乎没有办法(我知道)插入控件不会尝试验证的任何自定义HTML代码。在我测试它的IE6中,它认为<bgsound><audio>标记无效,因此它会剥离它们。它不应该对<bgsound>这样做,但确实如此。同样适用于<!-- comment -->等评论。

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

  • 切换到标准模式,例如通过使用注册表项FEATURE_BROWSER_EMULATION正确插入标记但不适用于某些版本的Internet Explorer(我相信最低版本将是IE9,因此它不太灵活。

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