Firefox插件并不总是获得视频src

时间:2015-04-22 20:26:45

标签: javascript html5 firefox video firefox-addon-sdk

我试图制作我的第一个插件,但我遇到了一个问题。我的插件是将图像和视频上传到网站的插件。图像工作正常,但有视频,它有点偏。这是我的代码:

var contextMenu = require("sdk/context-menu");
var tabs = require("sdk/tabs");

contextMenu.Item({
  label: "Upload to domain",
  context: contextMenu.SelectorContext("img,video"),
  contentScript:'self.on("click", function(node, data){self.postMessage(node.src);});',
  onMessage: function(imgSrc){
    tabs.open("http://domain.org/upload/?"+imgSrc);
  }
});

如果您在右侧here播放视频,则视频网址会传递给onMessage函数。如果你试试here,它就不会传递网址。它们都是webms。我猜它只是不能与html5播放器一起工作。我对么?有解决方法吗?

1 个答案:

答案 0 :(得分:1)

您查找源代码的方法并不总是与video元素一起使用,因为与img不同,video元素的源可以指定为子元素source这是什么正在发生在第二种情况。要处理这种情况,您的代码必须类似于:

self.on("click", function(node, data){
    if(node.src){
        self.postMessage(node.src);
    }else if(node.nodeName.toUpperCase() === "video".toUpperCase()){
        var sources = node.children; // or may be node.querySelector("source");
        for(var i in sources){
            if(sources[i].src && sources[i].nodeName.toUpperCase() === "source".toUpperCase()){
                self.postMessage(node.src);
            }
        }
    }
}