0

我想在 Firefox 插件中嵌入一个 Flash 对象。

这可以通过图像来完成:

imgTest = function(document){      
  var h = document.getElementsByTagName("body")[0];            
  var img = document.createElement("img");
  img.src = 'chrome://extname/content/image.jpg';      
  h.appendChild(img);
}

当对 Flash 执行相同操作时,Flash 对象不显示:

flashTest = function(document){      
  var h = document.getElementsByTagName("body")[0];            
  var ob = document.createElement("object");
  var embed = document.createElement("embed");
  embed.type = 'application/x-shockwave-flash';
  embed.src = 'chrome://extname/content/flash.swf';
  ob.appendChild(embed);      
  h.appendChild(ob);
}

在 Firebug 中查看对象已附加,但嵌入显示为灰色。

这可能吗?

4

1 回答 1

0

我猜这document指向浏览器内容区域中加载的网页(至少您似乎有一个 HTML 文档,而不是 XUL 文档)。然后问题似乎是该网页不允许访问chrome://extname/。如果您希望网页可以访问扩展程序的内容,那么您应该在 中指定标志contentaccessiblechrome.manifest例如:

content extname chrome/path/ contentaccessible=yes

侧节点:它恰好适用于图像,因为图像在您设置src属性后立即开始同步加载 - 因此请求的发起者是您的扩展并且允许请求​​。Flash 对象仅在插入文档后才开始异步加载。这里请求的发起者是网页,在这种情况下不允许它发出请求。

于 2012-05-29T12:31:55.083 回答