我使用此代码插入<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>
个标记从编辑模式。但它必须有可能在旧模式下不是吗?
答案 0 :(得分:0)
经过大量的浪费时间后,我发现了一些事情:
使用insertAdjacentHTML
甚至innerHTML
时,Internet Explorer控件会将其认为无效的标记剥离。似乎没有办法(我知道)插入控件不会尝试验证的任何自定义HTML代码。在我测试它的IE6中,它认为<bgsound>
和<audio>
标记无效,因此它会剥离它们。它不应该对<bgsound>
这样做,但确实如此。同样适用于<!-- comment -->
等评论。
我发现无法使用insertAdjacentHTML
或innerHTML
插入代码。我能做的最好的事情是将声音标签包装在其他标签内 - 如果我这样做,声音在插入时会发挥作用,但它仍然不在源头。最后,我将HTML直接插入到生成的HTML中,然后将HTML保存到磁盘(我标记了声音已添加,在保存HTML之前我将其插入HTML而不依赖于MSHTML)。
切换到标准模式,例如通过使用注册表项FEATURE_BROWSER_EMULATION
正确插入标记但不适用于某些版本的Internet Explorer(我相信最低版本将是IE9,因此它不太灵活。
我找不到解决方案,但至少我有一些解决方法。也许它可以帮助将来的某个人。