从XUL中动态添加“嵌入”类型元素到文档

时间:2011-02-15 06:34:28

标签: javascript firefox xul

这可能听起来很模糊,但我在最后6个小时内试图解决这个“简单”的壮举:

  1. 我在Firefox Addon中运行代码
  2. 用户触发需要播放某些音频的动作,但这里的问题是 - 此音频是动态的(取决于用户的输入),并且是从某个服务器提取的。
  3. 我选择动态地将embed元素插入到新tabbrowser的文档中,其src指向服务器资源,但我完全无法完成此操作!我没有嵌入元素!
  4. 有趣的是,它在普通的javascript函数范围(html文档中script标记内的代码)中运行良好,但在使用XUL时都失败了。

    以下是代码段

    function loadURL(url)  
    {
    var razorTabBrowser = gBrowser.getBrowserForTab(gBrowser.addTab("chrome://razorextension/content/read.html"));  
    razorTabBrowser.addEventListener("load", function () { 
    
        var soundEmbed = razorTabBrowser.contentDocument.createElement("embed");
         soundEmbed.setAttribute("src", url);
         soundEmbed.setAttribute("hidden", true);
         soundEmbed.setAttribute("autostart", true);
         soundEmbed.removed = false;
    
         razorTabBrowser.contentDocument.body.appendChild(soundEmbed)
    
        }, true);
    }
    

1 个答案:

答案 0 :(得分:0)

据我所知,nsISound.play适用于远程网址,只要它是WAV格式。

编辑:

我不记得哪个版本的Firefox支持<html:audio>,但我认为您可以在不添加到文档的情况下使用它。