访问firefox插件中的html文件

时间:2016-07-15 10:24:30

标签: html firefox-addon firefox-addon-sdk

我正在使用一个插件,在点击带有特殊html的按钮时打开一个新标签。现在,html文件位于一个专用的网站空间,但有一个解决方法,这意味着,我可以将html文件放在插件本身的数据结构中并从那里访问它吗?问题是,当通过连接按钮点击按钮并且我在该html中使用AngularJS这似乎是一个问题时,我提供了活动网站的网址。

我的代码:

index.js:

var { ActionButton } = require("sdk/ui/button/action");
var tabs = require("sdk/tabs");
var data = require("sdk/self").data; 

var button = ActionButton({
  id: "my-button",
  label: "Start LLIBrowser",
  icon: {
    "16": "./img/logo-16.png"
  },
  onClick: showPlugIn
});

function showPlugIn(state){ 
  let currUrl = tabs.activeTab.url;
  //var file = "file:///home/janine/OneDrive/Uni/OvGU/4. Semester/SoftwareProjekt/LLIBrowserGalleryAndInfo/data/overlay.html"; just for testing
  var file = "http://www-e.uni-magdeburg.de/jpolster/LLIBrowser/overlay.html";
  var completePath = file.concat("?url=").concat(currUrl);

  tabs.open(completePath)
}

任何想法?

干杯!

2 个答案:

答案 0 :(得分:2)

理论上,我没有看到任何问题。 将HTML文件放在数据文件夹中,然后通过以下方式访问它:

var file = data.url("overlay.html");

编辑:M.Onyshchuk说这会触发

是正确的
  

地址无效

错误。我没想到“:”。为了解决这个问题,只需从URL中删除协议信息即可。

    currUrl = currUrl.replace(/^https?\:\/\//i, "");

要在插件中使用AngularJS,最简单的方法是简单地将当前版本与您的插件一起发送。下载最新版本,将其放入数据文件夹,然后只需按照通常的方式在HTML文件中访问它。

虽然我不熟悉AngularJS,但我想不出有什么理由不适用。

祝你的项目好运!

Sintho

答案 1 :(得分:1)

仅更改文件加载URI是不够的:

  var file = data.url("overlay.html");

在这种情况下,您会看到错误为

  

地址无效

但是你可以修改你的代码并发送当前标签页不是作为URI的查询部分,而是作为片段部分:

  let currUrl = tabs.activeTab.url;
  currUrl = currUrl.replace(":", "%");
  var file = data.url("overlay.html");
  var completePath = file.concat("#").concat(currUrl);

不幸的是 encodeURIComponent 不起作用:

  let currUrl = encodeURIComponent(tabs.activeTab.url); // The address isn't valid

您需要在overlay.html

中使用解析片段URI(在#之后)