我试图制作我的第一个插件,但我遇到了一个问题。我的插件是将图像和视频上传到网站的插件。图像工作正常,但有视频,它有点偏。这是我的代码:
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播放器一起工作。我对么?有解决方法吗?
答案 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);
}
}
}
}