2014-03-07 50 views
1

我使用此代碼插入<bgsound>標記。在Internet Explorer設計模式中插入<bgsound>

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

忽略<bgsound>已過時。我正在使用它,因爲在IE6中它可以工作。

但上述操作後,HTML源中沒有任何內容。起初我以爲東西是錯誤與上面的代碼,直到我試圖這樣的:

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

在它上面只是<body>,因爲它應該正確後插入<p>標籤。那麼爲什麼它不會插入<bgsound>呢?

而且,奇怪的事情發生,如果我插入<audio>標籤來代替:

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

這個源後,我看到的是some audio</audio>沒有打開標籤。

我開始懷疑上述是不是工作,因爲我在設計師模式,這是可能的原因,爲什麼它不會插入<bgaudio>?試圖插入一些其他標籤...例如評論也沒有工作(<!-- comment -->)。

編輯:後來我在註冊表中設置爲11001(0x2AF9的Internet Explorer 11模式)都<audio><bgsound>標籤從編輯模式正確插入後試圖FEATURE_BROWSER_EMULATION。但是,在舊模式中一定是可以的嗎?

回答

0

耽誤了不少時間後,這裏有一些事情我發現:使用insertAdjacentHTML甚至innerHTML

  • 的Internet Explorer,它認爲控制條標籤是無效的。似乎沒有一種方法(我知道)插入控件不會嘗試驗證的任何自定義HTML代碼。在我測試它的IE6中,它認爲<bgsound><audio>標記無效,因此它將它們除去。它不應該爲<bgsound>這樣做,但它確實如此。 <!-- comment -->等評論也是如此。

  • 我發現沒有辦法使用insertAdjacentHTMLinnerHTML來插入標籤。我能做的最好的事情就是將聲音標籤包裹在其他標籤內 - 如果我這樣做了,聲音在插入時確實播放,但它仍然沒有來源。最後,我將它直接插入生成的HTML,然後將HTML保存到磁盤(我標記了聲音已添加,並且在保存HTML之前將其插入到HTML中而不依賴於MSHTML)。

  • 切換到標準模式例如通過使用註冊表項FEATURE_BROWSER_EMULATION正確地插入標籤,但不會在某些版本的Internet Explorer上工作(我相信最低版本將爲IE9,因此它不太靈活)。

我發現沒有解決方案,但至少我有一些解決方法。也許這對未來有幫助。